elasticsearch “前缀”和“范围”如何合并?

weylhg0b  于 2022-12-17  发布在  ElasticSearch
关注(0)|答案(1)|浏览(117)

我正在尝试使用prefixrange进行搜索。
这是可行的:

GET /traffic-*/_search
{
  "query": {
      "prefix": {
          "src": {
              "value": "192."
          }
      }
  }
}

但是当我尝试加入range时,我得到了一个错误:

GET /traffic-*/_search
{
 "query": {
    "prefix": {
      "src": {
          "value": "192."
      }
    },
    "bool": {
        "must": [
              {
                "range" : {
                    "score" : {
                        "gte": 7
                    }
                }
              }
            ]
          }
    }
 }

下面是错误:

{
  "error": {
    "root_cause": [
      {
        "type": "parsing_exception",
        "reason": "[prefix] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
        "line": 8,
        "col": 5
      }
    ],
    "type": "parsing_exception",
    "reason": "[prefix] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
    "line": 8,
    "col": 5
  },
  "status": 400
}

我尝试了很多其他方法,包括像这样,但仍然得到同样的错误:

GET /traffic-*/_search
{
 "query": {
    "bool": {
        "must": [{
            "prefix": {
              "src": {
                  "value": "192."
                }
              },
              "range" : {
                  "score" : {
                      "gte": 7
                  }
              }
            }]
          }
    }
 }

如何更正此语法?

kninwzqo

kninwzqo1#

尝试在Must Bool Query中添加“前缀”和“范围”查询。如下所示:

{
  "query": {
    "bool": {
      "must": [
        {
          "prefix": {
            "src": {
              "value": "192."
            }
          }
        },
        {
          "range": {
            "score": {
              "gte": 7
            }
          }
        }
      ]
    }
  }
}

相关问题