Как я могу получить параметры для фильтрации по полю непосредственно изasticsearch? - PullRequest
0 голосов
/ 02 октября 2018

Я хочу заполнить поле фильтрации на основе данных, которые я проиндексировал в Elasticsearch.Как я могу получить эти данные?Например, мои документы внутри индекса «test» и типа «doc» могут иметь вид

{"id":1, "tag":"foo",  "name":"foothing"}
{"id":2, "tag":"bar",  "name":"barthing"}
{"id":3, "tag":"foo",  "name":"something"}
{"id":4, "tag":"quux", "name":"quuxthing"}

Я ищу что-то вроде GET /test/doc/_magic?q=tag, которое вернуло бы [foo,bar,quux] из моих данных.Я не знаю, как это называется или вообще возможно.Я не хочу помещать все записи индекса в память и делать это программно, у меня есть миллионы документов в индексе с сотней различных тегов.

Возможно ли это с ES?

1 Ответ

0 голосов
/ 02 октября 2018

Да, это возможно, и это называется terms агрегацией

. Вы можете сделать это следующим образом:

GET /test/doc/_search
{   
    "size": 0,
    "aggs" : {
        "tags" : {
            "terms" : { 
               "field" : "tag.keyword",
               "size": 100
            }
        }
    }
}

Обратите внимание, что в зависимости от количества элементоввашего поля tag вы можете увеличить / уменьшить значение size (по умолчанию 10).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...