我试图通过弹性搜索索引进行搜索,使用通配符过滤器,它正常工作直到我使用" space"在我的搜索条件。
例如:如果弹性指数中的值是"这是测试值"
当我使用搜索值时:"此*" - >工作,获取价值 当我使用搜索值时:"这是*" - >不工作,导致零匹配
我的代码如下所示
QueryBuilders。的 wildcardQuery (
ElasticSearchUtil.FIELDNAME,searchValue.toLowerCase())
我如何处理空间并使我的搜索成功?
问候 UI
答案 0 :(得分:5)
通配符查询仅适用于单个令牌。您要做的是找到一个令牌,后跟另一个令牌,第二个令牌由前缀指定。这可以通过使用match phrase prefix查询来实现。您的查询将如下所示:
QueryBuilders.matchPhrasePrefixQuery(ElasticSearchUtil.FIELDNAME,searchValue)
请注意,searchValue
最后不应包含“*”。