弹性通配符搜索不使用空间

时间:2015-03-31 20:13:25

标签: elasticsearch

我试图通过弹性搜索索引进行搜索,使用通配符过滤器,它正常工作直到我使用" space"在我的搜索条件。

例如:如果弹性指数中的值是"这是测试值"

当我使用搜索值时:"此*" - >工作,获取价值 当我使用搜索值时:"这是*" - >不工作,导致零匹配

我的代码如下所示

QueryBuilders。的 wildcardQuery
ElasticSearchUtil.FIELDNAME,searchValue.toLowerCase())

我如何处理空间并使我的搜索成功?

问候 UI

1 个答案:

答案 0 :(得分:5)

通配符查询仅适用于单个令牌。您要做的是找到一个令牌,后跟另一个令牌,第二个令牌由前缀指定。这可以通过使用match phrase prefix查询来实现。您的查询将如下所示:

QueryBuilders.matchPhrasePrefixQuery(ElasticSearchUtil.FIELDNAME,searchValue)

请注意,searchValue最后不应包含“*”。