2016-11-11 3 views
0

У меня довольно простой запрос elasticsearch, где я фильтрую некоторые элементы по категориям. Это постоянная оценка запрос, что-то вроде этого:Elasticsearch постоянная оценка сортировка

"query": { 
    "constant_score": { 
     "filter": { 
      "term": { 
       "category": "[category-id]" 
      } 
     } 
    } 
} 

Проблемы заключается в том, что не имея счета сортировать этот результат, они не всегда возвращаются в том же порядке. И это проблема, потому что это испортит мою разбивку на страницы.

Пример. Я запрашиваю первые 5 пунктов, и я возвращаю обратно, скажем, следующие идентификаторы: [4, 7, 8, 10, 3]. Затем я хочу, чтобы следующие 5 элементов отображали следующую страницу, но я могу повторить некоторые пункты, например: [12, 15, 7, 13, 9].

Проблема в том, что все мои поля являются строковыми полями, и я бы не хотел сортировать их. Порядок сортировки не важен, просто важно сохранять один и тот же порядок каждый раз.

Любые идеи? Благодаря!

ответ

0

Попробуйте это:

GET _search 
{ 
    "query": { 
    "bool": { 
     "filter": { 
     "term": { 
      "category": "[category-id]" 
     } 
     } 
    } 
    } 
} 

Поскольку это то, что раньше известная как отфильтрованный запрос не забивает не рассчитываются и поле оценки будет иметь значение 0.