elasticsearch错误:[exists]未知令牌[start\u array]在[field]之后

yx2lnoni  于 2021-06-13  发布在  ElasticSearch
关注(0)|答案(1)|浏览(385)

我正在尝试使elasticsearh查询正常工作,但出现以下错误:

org.elasticsearch.common.ParsingException: [exists] unknown token [START_ARRAY] after [field]

该查询应获取两年(15001550)之间日期为date.old或date.new的所有文档,还应包括那些字段值未定义的文档。
我的问题是:

{
   "query":{
      "bool":{
         "should":[
            {
               "range":{
                  "date.old":{
                     "gte":1500,
                     "lte":1550
                  }
               }
            },
            {
               "range":{
                  "date.new":{
                     "gte":1500,
                     "lte":1550
                  }
               }
            },
            {
               "bool":{
                  "must_not":{
                     "exists":{
                        "field":"date.new"
                     }
                  }
               }
            },
            {
               "bool":{
                  "must_not":{
                     "exists":{
                        "field":"date.old"
                     }
                  }
               }
            }
         ]
      }
   }
}

有人看到问题了吗?谢谢!

6uxekuva

6uxekuva1#

点击与上述问题相同的搜索查询不会产生解析错误。
添加索引Map、索引数据和搜索结果的工作示例
索引Map:

{
  "mappings": {
    "properties": {
      "date": {
        "properties": {
          "old": {
            "type": "long"
          },
          "new": {
            "type": "long"
          }
        }
      }
    }
  }
}

索引数据:

{
  "data": {
    "new": 1501,
    "old": 10
  }
}

{
  "title": "elasticsearch"
}

搜索结果:

"hits": [
  {
    "_index": "65112793",
    "_type": "_doc",
    "_id": "1",
    "_score": 1.0,
    "_source": {
      "date": {
        "new": 1501,
        "old": 10
      }
    }
  },
  {
    "_index": "65112793",
    "_type": "_doc",
    "_id": "2",
    "_score": 0.0,
    "_source": {
      "title": "elasticsearch"
    }
  }
]

编辑1:
根据以下评论:
搜索查询:

{
  "query": {
    "bool": {
      "should": [
        {
          "range": {
            "date.old": {
              "gte": 1500,
              "lte": 1550
            }
          }
        },
        {
          "range": {
            "date.new": {
              "gte": 1500,
              "lte": 1550
            }
          }
        }
      ],
      "must": [
        {
          "bool": {
            "must_not": {
              "exists": {
                "field": "date.new"
              }
            }
          }
        },
        {
          "bool": {
            "must_not": {
              "exists": {
                "field": "date.old"
              }
            }
          }
        }
      ]
    }
  }
}

相关问题