以下elasticsearch查询有什么问题?

时间:2017-06-19 11:22:00

标签: elasticsearch

我想搜索标题和正文的全文并过滤回答计数。 我阅读了elasticsearch documentation for combining filters并构建了此查询。

"query": {
        "bool": {
            "minimum_should_match": "25%",
            "should": [
                {
                    "query_string": {
                        "query": "elasticsearch",
                        "analyze_wildcard": "True",
                        "fields": [
                            "body"
                        ]
                    }
                },
                {
                    "query_string": {
                        "query": "test",
                        "analyze_wildcard": "True",
                        "fields": [
                            "title"
                        ]
                    }
                }
            ]
        },
        "constant_score": {
            "filter": {
                "query": {
                    "bool": {
                        "must": [
                            {
                                "range": {
                                    "answer_count": {
                                        "gte": 0,
                                        "lte": 0
                                    }
                                }
                            }
                        ]
                    }
                }
            }
        }
    }
}

它一直给我这个错误。

 RequestError: TransportError(400, u'parsing_exception', u'no [query] registered for [filter]')

1 个答案:

答案 0 :(得分:3)

你需要这样写:

{
  "query": {
    "bool": {
      "minimum_should_match": "25%",
      "should": [
        {
          "query_string": {
            "query": "elasticsearch",
            "analyze_wildcard": "True",
            "fields": [
              "body"
            ]
          }
        },
        {
          "query_string": {
            "query": "test",
            "analyze_wildcard": "True",
            "fields": [
              "title"
            ]
          }
        }
      ],
      "filter": [
       {
        "range": {
          "answer_count": {
            "gte": 0,
            "lte": 0
          }
        }
       }
      ]
    }
  }
}