2014-11-18 3 views
-1

Я использую Elastic search-1.2.2.фильтр + сортировка не работает в поиске эластичности

Здесь я должен сделать комбинацию фильтра + сортировку. Необходимо получить значение сортировки по отношению к фильтру

Мне не нравится использовать фасет, поскольку он устарел. Фильтр запросов не поддерживает И фильтр, поэтому я попытался упомянуть boolFilter и указал его как пост-фильтр в searchQueryBuilder. Запрос:

{ 
    "from": 0, 
    "size": 10, 
    "sort": [ 
    { 
     "display_order": { 
     "order": "asc" 
     } 
    } 
    ], 
    "post_filter": { 
    "bool": { 
     "must": { 
     "and": { 
      "filters": [ 
      { 
       "term": { 
       "item_ids": ["564279ac-a887-4a0b-99e9-5802b4508747","564279ac-a887-4a0b-99e9-5802b4508447","564279ac-a887-4a0b-99e9-5302b4508747"] 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 

, но этот запрос только фильтровать записи, soting не работает здесь.

ли я что-то не так?

ответ

0

Я думаю, что вы усложнять вопрос -

  1. у вас нет какой-либо агрегации так post_filter не нужен
  2. у вас есть BOOL и и, но у вас есть только один фильтр
  3. Вы используете термин, но имеете несколько терминов

Что вы подразумеваете под «нерабочим» - вы получаете сообщение об ошибке?

Вы можете попробовать это упрощенный запрос:

curl -XGET "http://localhost:9200/hubware3/message/_search?pretty" -d' 
{ 
    "sort": [ 
    { 
    "display_order": {"order": "asc"} 
    } 
], 
"filter" : { 
     "terms" : { "item_ids" : ["564279ac-a887-4a0b-99e9-5802b4508747","564279ac-a887-4a0b-99e9-5802b4508447","564279ac-a887-4a0b-99e9-5302b4508747"]} 
     } 
    } 
}' 
+0

да этот запрос будет Сюита для моего конкретного сценария. , но я использую функцию общего фильтра, , которая добавит несколько фильтров во время выполнения. Почему я использовал boolFilter? Для того, чтобы выполнить настройку нескольких фильтров, зависит время отбираемого фильтра bool. Здесь моя логика фильтра включает фильтр bool + (ИЛИ или ИЛИ). Спасибо за объяснение о post_filter, можете ли вы объяснить мне, как я могу добавить фильтр bool в поисках QueryBuilder. Я использовал эту строку в JAVA searchQueryBuilder.setPostFilter (boolFilter); – kumar

+0

не объединяйте «bool» с «и» - используйте тот или иной. –

+0

, так что вы можете направить меня, как я могу достичь этого условия. (item_id == 1 && name == "John") || (product_id == 234 && vendor! = "youtube") && (date> = "2014-11-01" && date <= "2014-11-18") Для того, чтобы соответствовать этим условиям, я использую комбинацию bool + AND. Какова будет причина для того, чтобы не использовать bool + и сочетание ?. – kumar

Смежные вопросы