过滤器+排序在弹性搜索中不起作用

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

标签: java elasticsearch

我正在使用Elastic search-1.2.2。

这里我要做一个filter + sort的组合。 需要获得关于过滤器的排序id值

我不喜欢使用facet,因为它已被弃用。 查询过滤器不支持AND过滤器,因此我尝试提及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"]
              }
            }
          ]
        }
      }
    }
  }
}

但是这个查询只过滤了记录,并且没有在这里工作。

我是否做错了什么?

1 个答案:

答案 0 :(得分:0)

我认为你过度复杂化了这个问题 -

  1. 您没有任何汇总,因此不需要 post_filter
  2. 您有 bool 以及,但您只有一个过滤器
  3. 您使用字词但有多个字词
  4. 你是什么意思"不工作" - 你收到错误吗?

    您可以尝试这种简化的查询:

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