如何在弹性搜索中执行内部过滤器

时间:2014-11-18 15:04:46

标签: elasticsearch

我需要在弹性搜索中做一个嵌套的过滤器。

(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过滤器+排序。

文档链接将非常有用。

1 个答案:

答案 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"}}}
     ]
  }
}'

andbool must可以互换。