作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在尝试编写一个 Elasticsearch 查询,该查询必须不区分大小写,末尾带有通配符,并且它必须在 token 上运行,而不是在纯文本上运行。我尝试使用 WildcardQuery 但似乎没有查询 token 。如果有人知道除了 ElasticSearch 文档之外在哪里寻找更多信息,我将非常感激。
我当前的查询:
SearchSourceBuilder search = SearchSourceBuilder.searchSource()
.size(0)
.query(QueryBuilders.wildcardQuery("myProperty", "*" + term + "*"))
.aggregation(AggregationBuilders
.terms("byBrand")
.field("myProperty")
.size(3));
最佳答案
尝试query_string
。这是allowing for a wildcard可以使用,但是说实话,从 ES 的角度来看,将通配符作为第一个元素(运行匹配的 SQL 方式)是错误的方式。我的意思是,它会起作用,但性能可能不是最好的。 ES 是一个搜索引擎,而不是数据库,考虑使用分析器来创建可以匹配您的搜索字符串的标记。例如,使用 ngrams
to split your text into tokens然后使用 terms
查询来搜索不带任何通配符的术语。
关于java - 如何在 ElasticSearch 中构建不区分大小写的通配符查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51281584/
我是一名优秀的程序员,十分优秀!