如何查询基于数字键的ElasticSearch?JSON字段名称工作经验年数:
"{\"61\": \"10\", \"8240\": \"5\", \"8249\": \"2\", \"50\": \"0\", \"2079\": \"2\"}"
我想过滤经验年数,比如50:0。
wztqucjr1#
因此,根据您的示例,您有如下文档:
POST myindex/_doc { "years_of_experience": { "50": "0", "61": "10", "2079": "2", "8240": "5", "8249": "2" } }
因此,您有一个years_of_experience的对象,并且您希望与字段名和值进行精确匹配。您需要将此字段中的所有字段设置为keyword类型。首先,您需要处理此问题的Map部分。下面是对此问题的解决方案:
years_of_experience
keyword
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" } } }
1条答案
按热度按时间wztqucjr1#
因此,根据您的示例,您有如下文档:
因此,您有一个
years_of_experience
的对象,并且您希望与字段名和值进行精确匹配。您需要将此字段中的所有字段设置为keyword
类型。首先,您需要处理此问题的Map部分。下面是对此问题的解决方案:在为这些数据创建索引时,需要为
years_of_experience
对象使用一个动态模板,其中的所有字段都是keyword
类型,并且可以对这些字段运行术语查询。那么现在我们可以在用上面的设置创建了索引之后再创建文档,并且可以按照如下方式过滤数据: