Значимые термины aggs делают противоположное тому, что вы ожидаете - они ищут необычные вхождения , а не самые распространенные термины!
Пример:
PUT stars
{"mappings":{"properties":{"my_id":{"type":"keyword"},"titles":{"type":"keyword","fields":{"fulltext":{"type":"text"}}}}}}
Затем индексируем несколько документов с похожими идентификаторами
POST stars/_doc
{
"my_id": "MH123",
"titles": [
"Star Wars: A New Hope",
"Star Wars: Return of the Jedi",
"Star Wars: \"Empire Strikes Back\""
]
}
POST stars/_doc
{
"my_id": "MH124",
"titles": [
"Star Wars: A New Hope",
"Star Wars: Return of the Jedi",
"Star Wars: \"Empire Strikes Back\""
]
}
Обратите внимание, что у следующего есть строка uncommon terms
внутри titles
POST stars/_doc
{
"my_id": "MH125",
"titles": [
"uncommon terms",
"Star Wars: A New Hope",
"Star Wars: Return of the Jedi",
"Star Wars: \"Empire Strikes Back\""
]
}
Теперь, уменьшив min_doc_count
от значения по умолчанию 3
до 1
:
GET stars/_search
{
"size": 0,
"aggs": {
"titles": {
"terms": {
"field": "my_id"
},
"aggs": {
"my_common_terms": {
"significant_terms": {
"field": "titles",
"min_doc_count": 1
}
}
}
}
}
}
, уступающего
"aggregations" : {
"titles" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "MH123",
"doc_count" : 1,
"my_common_terms" : {
"doc_count" : 1,
"bg_count" : 3,
"buckets" : [ ]
}
},
{
"key" : "MH124",
"doc_count" : 1,
"my_common_terms" : {
"doc_count" : 1,
"bg_count" : 3,
"buckets" : [ ]
}
},
{
"key" : "MH125",
"doc_count" : 1,
"my_common_terms" : {
"doc_count" : 1,
"bg_count" : 3,
"buckets" : [
{
"key" : "uncommon terms",
"doc_count" : 1,
"score" : 2.0,
"bg_count" : 1
}
]
}
}
]
}
}
Существуют и другие способы настройки, но именно так используются существенные термины .
То, что вы ищете, это фильтры с галькой, и вот вам хорошее начало в них.