首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹性搜索:如何找到精确值

弹性搜索:如何找到精确值
EN

Stack Overflow用户
提问于 2022-01-17 10:58:29
回答 1查看 283关注 0票数 0

我正在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/12
  • 6/10
  • 6
  • 16/6

我只想得到地址号6,并跳过另一个结果。

请帮帮我。谢谢大家

EN

回答 1

Stack Overflow用户

发布于 2022-01-17 11:08:21

根据文档,ES实际上建议您使用而不是 use (termQuery)来对抗TextFields,address_number是这样的:

术语查询编辑

返回在提供的字段中包含确切术语的文档。

您可以使用术语查询根据精确的值(如价格、产品ID或用户名)查找文档。

在默认情况下避免对文本字段使用术语查询(),作为分析的一部分,Elasticsearch会更改文本字段的值。这可能会使查找文本字段值的精确匹配变得困难。

要搜索文本字段值,使用匹配查询而不是

https://www.elastic.co/guide/en/elasticsearch/reference/master/query-dsl-term-query.html#query-dsl-term-query

您应该使用match来代替:

示例:

代码语言:javascript
复制
QueryBuilders.matchQuery("address_number", "6")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70740208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档