弹性通配符搜索不适用于 space

Elastic Wild card search not working with space

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

例如:如果弹性指数的值为"This is test value"

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

我的代码如下所示

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

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

问候 UI

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

QueryBuilders.matchPhrasePrefixQuery(ElasticSearchUtil.FIELDNAME, searchValue)

请注意 searchValue 末尾不应有“*”。