我需要在一個復合聚合中對某些鍵進行排除。 這里是我的索引中的一個檔案,作為一個例子:
{
"end_date": 1230314400000,
"parameter_codes": [28, 35, 30],
"platform_code": "41012",
"start_date": 1230314400000,
"station_id": 7833246
我執行一個搜索請求,允許我:為每個platform_code/parameter_codes夫婦獲得一個結果,再加上獲得相應的station_id,以及對桶進行分頁。
這里是請求 :
{
"size": 0,
"查詢"。{
"match_all": {
"提升"。1.0
}
},
"_source": false,
"聚合"。{
"compositeAgg": {
"composite": {
"size": 10,
"來源": [{
"platform_code": {
"條款"。{
"欄位": "platform_code",
"missing_bucket": false,
"順序": "升"
}
}
}, {
"parameter_codes": {
"條款"。{
"欄位": "parameter_codes",
"missing_bucket": false,
"順序": "升"
}
}
}]
},
"聚合"。{
"aggstation_id": {
"條款": {
"欄位": "station_id",
"大小": 2147483647,
"min_doc_count": 1,
"shard_min_doc_count": 0,
"show_term_doc_count_error": false,
"順序": {
"_key": "升"
}
}
},
"管道": {
"bucket_sort": {
"排序"。[{
"_key": {
"順序": "升"
}
}],
"從": 0,
"大小": 10,
"gap_policy": "SKIP"
}
}
}
}
}
}
這個請求給了我以下的結果:
{
"采取"。3,
"timed_out": false,
"_shards": {
"total": 8,
"成功": 8,
"跳過": 0,
"失敗": 0
},
"點擊率": {
"總數": {
"值": 3,
"關系": "eq"
},
"max_score": null,
"點擊率": []
},
"聚合"。{
"composite#compositeAgg": {
"after_key": {
"platform_code": "41012",
"parameter_codes": 60
},
"buckets": [{
"key": {
"platform_code": "41012",
"parameter_codes": 28
},
"doc_count": 1,
"lterms#aggstation_id": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [{
"key": 7833246,
"doc_count": 1
}]
}
}, {
"key": {
"platform_code": "41012",
"parameter_codes": 30
},
"doc_count": 2,
"lterms#aggstation_id": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [{
"key": 7833246,
"doc_count": 1
}, {
"key": 12787501,
"doc_count": 1
}]
}
}, {
"key": {
"platform_code": "41012",
"parameter_codes": 35
},
"doc_count": 2,
"lterms#aggstation_id": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [{
"key": 7833246,
"doc_count": 1
}, {
"key": 12787501,
"doc_count": 1
}]
}
}]
}
}
}
這個作業非常好,但我需要排除一個或多個引數代碼。
{
"platform_code": "41012",
"parameter_codes": 28
}
而且
{
"platform_code": "41012",
"parameter_codes": 30
}
我嘗試了許多選項,但不能成功地執行這個。 誰能告訴我如何做到這一點?
uj5u.com熱心網友回復:
一個腳本查詢可以在復合源中使用,只回傳陣列的特定值。
{
"size": 0,
"query": {
"match_all": {
"提升"。1
}
},
"_source": false,
"聚合": {
"compositeAgg": {
"composite": {
"size": 10,
"來源": [
{
"platform_code": {
"條款"。{
"欄位": "platform_code.keyword",
"missing_bucket": false,
"順序": "升"
}
}
},
{
"parameter_codes": {
"條款"。{
"腳本": {
"來源": """
def arr=[];
for (item in doc['parameter_codes'] ) {
if(item !=35)
{
arr.add(item)。
}
}
回傳 arr""
}
}
}
}
]
},
"聚合"。{
"aggstation_id": {
"條款": {
"欄位": "station_id",
"大小": 2147483647,
"min_doc_count": 1,
"shard_min_doc_count": 0,
"show_term_doc_count_error": false,
"順序": {
"_key": "升"
}
}
},
"管道": {
"bucket_sort": {
"排序"。[
{
"_key": {
"順序"。"升"
}
}
],
"從": 0,
"大小": 10,
"gap_policy": "SKIP"
}
}
}
}
}
}
uj5u.com熱心網友回復:
你可以嘗試從查詢中排除 "parameter_codes=35 "這個選項。
{
"query": {
"bool": {
"must_not": [
{
"術語": {
"parameter_codes": {
"值": "35"
}
}
}
]
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/315195.html
標籤:
下一篇:錯誤:(-215:Assertionfailed)!_image.empty()&&_image.type()==CV_8UC1&&(_image.isMat()||_image.isUMat())在
