我需要在弹性搜索中做一个嵌套的过滤器。
(item_id == 1 && name == "John") || (product_id == 234 && vendor !="youtube") && (date >="2014-11-01" && date <="2014-11-18")
我引用此链接:
http://www.elasticsearch.org/guide/en/elasticsearch/client/java-api/current/search.html.
并对searchQueryBuilder执行了后置过滤操作。但是当我们使用后置过滤器时,排序并不适合。
我已经提出过关于后置过滤器+排序不起作用的问题。
http://stackoverflow.com/questions/26986756/filter-sorting-not-working-in-elastic-search
我收到了有关在聚合发生时使用后置过滤器的信息。
需要知道如何实现nester过滤器+排序。
文档链接将非常有用。
答案 0 :(得分:0)
在过滤器中执行所有操作:
curl -XGET "http://localhost:9200/hubware3/message/_search?pretty" -d' {
"filter" : {
"and" : [{
"bool" : {
"should" :[ {
"bool" : {
"must" : [
{"term" : { "item_id" : "1" }},
{"term" : { "name" : "John" }}
]
}},
{"bool" : {
"must" : {
"term" : { "product_id" : "234" }
},
"must_not" : {
"term" : { "vendor" : "youtube" }
}
}
}
]
}},
{"range" : {"date " : { "gte" : "2014-11-01","lte" : "2014-11-18"}}}
]
}
}'
and
和bool must
可以互换。