首页 > 解决方案 > 如何使用无痛脚本访问 Elastisearch 中范围数据类型的数据

问题描述

我有以下映射配置

          "some_range": {
            "type": "integer_range"
          }

它有如下数据

"some_range": [
            {
              "gte": 100,
              "lte": 200
            },
            {
              "gte": 300,
              "lte": 400
            }
}

我正在尝试构建一个查询,该查询将基于此范围信息返回一个布尔字段,例如查询看起来像这样:

  "script_fields" : {
    "within_range" : {
      "script" : {
        "inline": "doc['some_range.gte'].value > params.my_range && doc['some_range.lte'].value < params.my_range",
        "lang": "painless",
        "params": {
          "my_range": 150
        }
      }
    }
  }

预期回报是这样的

        "fields": {
          "within_range": [
            true
          ]
        }

但我尝试的查询给了我这个错误:

Fielddata is not supported on field [some_range] of type [integer_range]

我想知道编写无痛脚本的正确方法是什么,以及如何访问 ElasticSearch 中范围类型数据结构中的字段

标签: elasticsearchelasticsearch-query

解决方案


推荐阅读