javascript 带数字键的ElasticSearchJson字段查询

bfnvny8b  于 2023-01-04  发布在  Java
关注(0)|答案(1)|浏览(157)

如何查询基于数字键的ElasticSearch?
JSON字段名称工作经验年数:

"{\"61\": \"10\", \"8240\": \"5\", \"8249\": \"2\", \"50\": \"0\", \"2079\": \"2\"}"

我想过滤经验年数,比如50:0。

wztqucjr

wztqucjr1#

因此,根据您的示例,您有如下文档:

POST myindex/_doc
{
  "years_of_experience": {
    "50": "0",
    "61": "10",
    "2079": "2",
    "8240": "5",
    "8249": "2"
  }
}

因此,您有一个years_of_experience的对象,并且您希望与字段名和值进行精确匹配。您需要将此字段中的所有字段设置为keyword类型。首先,您需要处理此问题的Map部分。下面是对此问题的解决方案:

PUT myindex
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 0
  },
  "mappings": {
    "dynamic_templates": [
      {
        "strings_as_keyword": {
          "match_mapping_type": "string",
          "path_match": "years_of_experience.*",
          "mapping": {
            "type": "keyword"
          }
        }
      }
    ],
    "properties": {
      "years_of_experience": {
        "type": "object"
      }
    }
  }
}

在为这些数据创建索引时,需要为years_of_experience对象使用一个动态模板,其中的所有字段都是keyword类型,并且可以对这些字段运行术语查询。
那么现在我们可以在用上面的设置创建了索引之后再创建文档,并且可以按照如下方式过滤数据:

GET myindex/_search
{
  "query": {
    "term": {
      "years_of_experience.50": "0"
    }
  }
}

相关问题