我試圖通過使用腳本[數組] +字段聚合用戶在索引中找到重複項。彈性搜索中錯誤的術語總數doc_count
我的問題是爲什麼聚集方面僅由給定鍵([email protected]_SMITH)計數一次文件。是否有可能改變這種行爲。
數據:
POST users/user
{
"name" :"SMITH",
"emails" : [
"[email protected]"
]
}
POST users/user
{
"name" :"SMITH",
"emails" : [
"[email protected]",
"[email protected]"
]
}
DISTINCT查詢:
POST users/_search
{
"size": 0,
"aggs": {
"duplicateCount": {
"terms": {
"script": {
"inline": "doc['emails.keyword'].value + '_' + doc['name.keyword'].value"
}
}
}
}
}
結果:
"aggregations": {
"duplicateCount": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "[email protected]_SMITH",
"doc_count": 1
},
{
"key": "[email protected]_SMITH",
"doc_count": 1
}
]
}
}
這是因爲'DOC [「emails.keyword」] value'只需要來自'emails'數組的第一個值。我甚至不確定你可以使用'values',因爲腳本術語聚合不能返回兩個術語。 – Val
@Val感謝您的提示。引導我走向正確的方向。 –
Coo,但是我不確定你是否正確地做了它;-)你應該在for循環中只有'keys.add(p);'而不是其他任何東西 – Val