2016-09-08 3 views
0

Когда я читаю теорию From/Size в elasticsearch.Диапазон при эмулировании From/Size in elasticsearch

https://www.elastic.co/guide/en/elasticsearch/reference/1.7/search-request-from-size.html

Вопрос заключается в том, что, как detemine диапазон поиска. Например, если я произвожу 1.000 записей, то я запрашиваю как фрагменты ниже:

{ 
    "from" : 100, "size" : 10, 
    "query" : { 
     "term" : { "user" : "kimchy" } 
    } 
} 

Это будет поиск по диапазону записи от 100 до 1.000, а затем возвращать 10 результатов? Или он автоматически генерирует подходящий диапазон и возвращает 10 результатов? Может ли кто-нибудь помочь мне обойти эту проблему? С наилучшими пожеланиями.

ответ

1

Таким образом, elasticsearch разбивает наш индекс на более мелкие части, называемые «осколки», поэтому, если у вас есть индекс с 5 осколками и 1000 документами, каждому осколку будет присвоено 200 документов. Теперь, когда вы выполняете поисковый запрос, elasticsearch будет искать все осколки и создавать список результатов, отсортированных в порядке убывания оценки в каждом осколке.

Теперь, если мы хотим получить первые 10 результатов (от: 0, размер: 10), elasticsearch получит 10 лучших результатов от каждого осколка, т. Е. Составляет всего 50 результатов (при условии, что каждый осколок имеет более 10 ударов), затем сортируйте их снова и верните 10 лучших из них и отбросьте остальные 40 результатов.

Теперь, если вы хотите получить результаты от 100 до 110 (от: 100, размер: 10), elasticsearch запросит верхний результат 110 из каждого осколка, т.е. в общей сложности 550 результатов. Эти 550 результатов теперь будут отсортированы снова, чтобы получить 110 результатов, а остальные результаты 440 будут отброшены.

Теперь из этих 110 результатов номер 1-99 будет отброшен, а результат результата 100-110 будет возвращен в результате поискового запроса.

+0

В вашем ответе «Теперь, если вы хотите получить результаты от 100 до 110 (от: 100, размер: 10), elasticsearch запросит верхний результат 110 из каждого осколка, то есть 550 результатов« имеют проблемы. Я думаю, что elasticsearch запросит 10 лучших результатов из-за размера: 10 вы были config. И всего лишь 50 результатов, собранных со всех осколков – VanThaoNguyen

+0

Ну, это не правильно. Просто взгляните на это: https://www.elastic.co/guide/en/elasticsearch/guide/current/pagination.html – adityasinghraghav