Я хочу найти все города, в названии улицы которых нет термина "большой".
Вот мои пункты в индексе:
{
"name":"the big street",
"city": "NY",
"count": 2
},
{
"name":"not big street",
"city": "AM",
"count": 43
},
{
"name":"st42",
"city": "NY",
"count": 1687
},
{
"name":"Anacostia Drive",
"city": "WASH",
"count": 1687
},
Мне нужно найти все города , где имя НЕ ДОЛЖНО содержать (исключать) термин "большой".
, когда я пытаюсь использовать запрос термина с must_not
{
"collapse": {
"field": "city"
},
"query": {
"bool" : {
"must_not" : {
"term" : {
"name" : { "big" }
}
},
}
}
}
Я обнаружил, что города включают "NY", элемент из-за "st42" - и это неправильно из-за совпадения с "большой улицей" item.
Как решить?
Решение под ним хорошее, но запрос может быть более сложным, и мне нужно выделить:
{
"aggs": {
"aggs_by_city": {
"terms": {
"field": "city.keyword",
"size": 20
},
"aggs": {
"filter_exclude_count": {
"filter": { "match" : { "name" : "big" }}
},
"filter_include_count": {
"filter": { "match" : { "name" : "Anacostia" }}
},
"selector": {
"bucket_selector": {
"buckets_path": {
"exclude_cnt": "filter_exclude_count._count",
"include_name": "filter_include_count._count"
},
"script": "params.exclude_cnt == 0 && params.include_name > 0"
}
}
}
}
},
"size": 0
}