Как ограничить количество документов, возвращаемых для каждого термина в запросе терминов Elasticsearch? - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь получить документы с указанным списком терминов, например:

GET /_search
{
    "query" : {
        "terms" : {
            "md5" : ["file_1", "file_2"]
        }
    }
}

Можно ли ограничить результаты Elasticsearch только одним документом для каждого термина?В результате у меня должен быть один документ для "file_1" , один документ для "file_2" и т. Д.

То, что я пытаюсь выполнить, - этополучить Elasticsearch _id самого последнего документа для каждого термина в списке.Могу ли я сделать это таким образом или необходимо сделать отдельный запрос для каждого термина?

1 Ответ

0 голосов
/ 26 июня 2019

У вас есть два разных способа получить N документы для каждого семестра.

  • Один способ - выполнить один запрос для каждого термина.

  • Другой способ - использовать агрегацию по числу попаданий (см. Документацию *).1011 * здесь ).

    GET /_search
    {
        "query" : {
            "terms" : {
                "md5" : ["file_1", "file_2"]
            }
        },
        "aggs": {
            "top-docs": {
                "terms": {
                    "field": "md5",
                    "size": 3
                },
                "aggs": {
                    "top_tag_hits": {
                        "top_hits": {
                            "size" : 1
                        }
                    }
                }
            }
        }
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...