我正在Java客户端中使用ElasticSearch Version7.4。我正面临一个问题,那就是如何找到确切的价值:
我的地图:
elasticsearch.address.mapping={"properties":{"address":{"type":"text",“分析器”:“折叠”},“id”:{“类型”}:“
”},“ward_name”:{“类型”:“文本”,“分析器”:“折叠”},"address_number":{"type":"text",“索引”“not_analyzed”}}
我的java代码:
boolQueryBuilder.must(QueryBuilders.termQuery("address_number",“6”);
我得到了一些结果:
我只想得到地址号6,并跳过另一个结果。
请帮帮我。谢谢大家
发布于 2022-01-17 11:08:21
根据文档,ES实际上建议您使用而不是 use (termQuery)来对抗TextFields,address_number是这样的:
术语查询编辑
返回在提供的字段中包含确切术语的文档。
您可以使用术语查询根据精确的值(如价格、产品ID或用户名)查找文档。
在默认情况下避免对文本字段使用术语查询(),作为分析的一部分,Elasticsearch会更改文本字段的值。这可能会使查找文本字段值的精确匹配变得困难。
要搜索文本字段值,使用匹配查询而不是。
您应该使用match来代替:
示例:
QueryBuilders.matchQuery("address_number", "6")https://stackoverflow.com/questions/70740208
复制相似问题