Я пытаюсь выполнить агрегацию по значениям в массиве, а также фильтровать ведра, возвращаемые префиксом. Не уверен, что это возможно, или я неправильно использую ковш фильтра.ElasticSearch Фильтрация агрегаций из поля массива
3 документы:
{ "colors":["red","black","blue"] }
{ "colors":["red","black"] }
{ "colors":["red"] }
Цель состоит в том, чтобы получить количество документов, которые имеют цвет, начиная с буквы B:
{
"size":0,
"aggs" : {
"colors" : {
"filter" : { "prefix" : { "colors" : "b" } },
"aggs" : {
"top-colors" : { "terms" : { "field":"colors" } }
}
}
}
}
Результаты, которые возвращаются включают в себя красный, к сожалению. Очевидно, потому что документы с красным по-прежнему соответствуют фильтру, потому что они также имеют синий и/или черный цвет.
"aggregations": {
"colors": {
"doc_count": 2,
"top-colors": {
"buckets": [
{
"key": "black",
"doc_count": 2
},
{
"key": "red",
"doc_count": 2
},
{
"key": "blue",
"doc_count": 1
}
]
}
}
}
Есть ли способ фильтровать только результаты в виде ковша?
Woops, не знаю, как я пропустил, что в документации, спасибо! – scott