# Client.msearch и пейджинг

**URL:** <https://discuss.elastic.co/t/client-msearch/73202>\
**Category:** Вопросы на русском языке\
**Created:** [January 30, 2017, 11:58am UTC](https://discuss.elastic.co/t/client-msearch/73202 "2017-01-30T11:58:29Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![whispersofdew](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/whispersofdew/32/11067_2.png) [@whispersofdew](https://discuss.elastic.co/u/whispersofdew)\
**Post date:** [January 30, 2017, 11:58am UTC](https://discuss.elastic.co/t/client-msearch/73202/1 "2017-01-30T11:58:29Z")

</div>

Подскажите, пожалуйста, правильно ли я понял что не могу в msearch сделать стандартный пейджинг, чтоб из всех запросов возвращалось не более 10 записей? и объединить одним from : 0, size : 10, ВСЕ запросы (которые у меня генерируются и заранее их количество не знаю) нету возможности?

```
  ( {
    			query: {
    				match: {
    					_all: searchTerm
    				}
    			},
    			**from : 0, size : 10,**
    			highlight: {
    				fields: {
    					"*": {require_field_match: false}
    						}
    			}
    		})
```

---

<div class="post-metadata">

**Author:** ![whispersofdew](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/whispersofdew/32/11067_2.png) [@whispersofdew](https://discuss.elastic.co/u/whispersofdew)\
**Post date:** [January 30, 2017, 11:59am UTC](https://discuss.elastic.co/t/client-msearch/73202/2 "2017-01-30T11:59:58Z")

</div>

То что внутри каждого подзапроса я могу проставить с какой по какую - это я понял. Меня интересует можно ли агрегировать? Объединить чтоб из всех запросов сразу возвращало не более 10ти записей за 1 раз.

---

<div class="post-metadata">

**Author:** ![whispersofdew](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/whispersofdew/32/11067_2.png) [@whispersofdew](https://discuss.elastic.co/u/whispersofdew)\
**Post date:** [January 30, 2017, 12:19pm UTC](https://discuss.elastic.co/t/client-msearch/73202/3 "2017-01-30T12:19:16Z")

</div>

Я хочу на клиенте в браузере указать - выводи на страницу по 20 записей. Вот проблема у меня в том, что если я на 21ую страницу пейджинга перехожу - то как мне туда именно очередные 20 записей вывести. не прибегая к сложным сторонним математическим вычислениям, которые понизят скорость поиска.

---

<div class="post-metadata">

**Author:** ![whispersofdew](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/whispersofdew/32/11067_2.png) [@whispersofdew](https://discuss.elastic.co/u/whispersofdew)\
**Post date:** [January 30, 2017, 12:34pm UTC](https://discuss.elastic.co/t/client-msearch/73202/4 "2017-01-30T12:34:43Z")

</div>

нету стандартного паттерна для таких ситуаций? чтоб производительность поиска не сильно просаживалась.

---

<div class="post-metadata">

**Author:** ![whispersofdew](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/whispersofdew/32/11067_2.png) [@whispersofdew](https://discuss.elastic.co/u/whispersofdew)\
**Post date:** [January 30, 2017, 2:19pm UTC](https://discuss.elastic.co/t/client-msearch/73202/5 "2017-01-30T14:19:59Z")

</div>

видимо прийдется результаты группировать по индексам.

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [January 30, 2017, 3:09pm UTC](https://discuss.elastic.co/t/client-msearch/73202/6 "2017-01-30T15:09:00Z")

</div>

Я что-то не понимаю, если нужен один результат - почему бы не объединить все в один запрос и посылать этот запрос нормальным search-ем вместо msearch?

---

<div class="post-metadata">

**Author:** ![whispersofdew](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/whispersofdew/32/11067_2.png) [@whispersofdew](https://discuss.elastic.co/u/whispersofdew)\
**Post date:** [January 31, 2017, 6:05am UTC](https://discuss.elastic.co/t/client-msearch/73202/7 "2017-01-31T06:05:02Z")

</div>

у меня около 20 индексов. в каждом примерно по 10 типов. внутри каждого типа по 15-20 полей.

я думал что когда индексов много - лучше разграничивать на подзапросы.

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [January 31, 2017, 2:12pm UTC](https://discuss.elastic.co/t/client-msearch/73202/8 "2017-01-31T14:12:19Z")

</div>

> [@whispersofdew](#):
>
> я думал что когда индексов много - лучше разграничивать на подзапросы.

Я не думаю, что это хорошее решение, тем более если потом надо бороться с объединением результатов. Лучше предоставить эту работу elasticsearch. Я думаю это будет даже немного быстрее потому что elasticsearch будет возвращать только 10 записей вместо 200. Единственная проблема, которая тут может возникнуть, это если вы неаккуратно создали эти типы и поле с одним и тем же названием имеет разный тип в разных индексах/типах, и вы пытаетесь по этому полю сортировать или агрегировать.

---

<div class="post-metadata">

**Author:** ![whispersofdew](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/whispersofdew/32/11067_2.png) [@whispersofdew](https://discuss.elastic.co/u/whispersofdew)\
**Post date:** [February 1, 2017, 5:43am UTC](https://discuss.elastic.co/t/client-msearch/73202/9 "2017-02-01T05:43:23Z")

</div>

> [@Igor\_Motov](#):
>
> > [@whispersofdew](#):
> >
> > я думал что когда индексов много - лучше разграничивать на подзапросы.
> 
> Я не думаю, что это хорошее решение, тем более если потом надо бороться с объединением результатов. Лучше предоставить эту работу elasticsearch. Я думаю это будет даже немного быстрее потому что elasticsearch будет возвращать только 10 записей вместо 200. Единственная проблема, которая тут может возникнуть, это если вы неаккуратно создали эти типы и поле с одним и тем же названием имеет разный тип в разных индексах/типах, и вы пытаетесь по этому полю сортировать или агрегировать.

Вот это я какраз учел )

Сделаю оба типа запросов )

msearch просто по табам раскидаю ) Так даже лучше получилось ) Спасибо большое что как всегда быстро и подробно ответили!

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [March 1, 2017, 5:43am UTC](https://discuss.elastic.co/t/client-msearch/73202/10 "2017-03-01T05:43:24Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
