【问题标题】:Query with multiple field values specified指定多个字段值的查询
【发布时间】:2012-10-26 06:03:00
【问题描述】:

我正在尝试使用指定的多个字段执行弹性搜索查询。这是一些伪代码,希望能说明我的意图:

"query" : {
  "query_string" : { "query" : "william" }
},
"filter" : {
  "missing" : { "field" : "membership_expires_on" }
},
"filter" : {
  "missing" : { "field" : "gender" }
},
"filter" : {
  "terms" : { "status" : "p"}
},
"filter" : {
  "terms" : { "unit_id" : "4"}
}

我正在尝试将所有这些过滤器组合在一起,但从elasticsearch doc 我无法弄清楚如何将这些特定过滤器放入单个查询中。任何帮助将不胜感激!

更新:这是我目前所拥有的:

{
  "from": 0,
  "query": {
    "filtered": {
      "filter": {
        "bool": {
          "must": [
            {
              "missing": {
                "field": "membership_expires_on"
              }
            },
            {
              "term": {
                "status": "p"
              }
            },
            {
              "missing": {
                "field": "gender"
              }
            },
            {
              "term": {
                "unit": "4"
              }
            }
          ]
        }
      },
      "query": {
        "query_string": {
          "query": "william"
        }
      }
    }
  },
  "size": 10
}

但这不会返回任何结果,所以我做错了什么。我是否以非法方式使用带有数组的 bool 过滤器?

更新 2:我已经确认上面的 JSON 确实是一个有效的查询,所以我的数据/索引可能有问题。这将是另一天的问题:-)

【问题讨论】:

    标签: filter elasticsearch


    【解决方案1】:

    看看BoolFilter。它应该会有所帮助。

    【讨论】:

    • 如果您已经定义了一个文档和映射,您能否在您的问题中添加一个?
    • elasticsearch 会接受必须子句中的数组吗?还是只能在 should 子句中?
    • 据我了解您的评论,是的,您可以在 must 子句中添加多个查询。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多