弹性搜索:未注册 [or] 查询。

4

有人能帮我解决这个查询吗?我得到了一个错误提示:"没有为[or]注册查询"。我结构错了吗?它应该过滤所有地区为530且开始为空或地区为530且开始为"06192013"的结果,然后基于此提高文档的过滤条件。

{
  "query": {
    "custom_filters_score": {
      "query": {
        "bool": {
          "must": [
            {"field":{"sector":"sector1"}},
            {"term":{"user_type":"ghost"}},
            {"term":{"area":"530"}}
          ]
        },
        "filter":{
          "or": [
            {
              "and": [
                {"term":{"area":"530"}},
                {"term":{"start":"06192013"}}
              ]
            },
            {
              "and": [
                {"term":{"area":"530"}},
                {"term":{"start":"blank"}}
              ]
            }
          ]
        }
      },
      "filters": [
        {"filter":{"term":{"relevance" :5726}},"boost":"1000"},
        {"filter":{"term":{"relevance2":5726}},"boost":"100"}
      ],
      "score_mode":"total"
    }
  }
}
1个回答

5
过滤器对象中的 or 过滤器放错位置了。我猜你想使用包含布尔查询和 or 过滤器的过滤查询(filtered query),类似于这样:filtered query。请注意检查一下。
{
    "filtered" : {
        "bool": {
          "must": [
            {"field":{"sector":"sector1"}},
            {"term":{"user_type":"ghost"}},
            {"term":{"area":"530"}}
          ]
        },
        "filter" : {
            "or": [
            {
              "and": [
                {"term":{"area":"530"}},
                {"term":{"start":"06192013"}}
              ]
            },
            {
              "and": [
                {"term":{"area":"530"}},
                {"term":{"start":"blank"}}
              ]
            }
          ]
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接