首页 > 解决方案 > 如何使用 RESTHightLevelCient 执行包含多个字符串的搜索

问题描述

我有一个包含多个字符串的字段,如何使用 RESTHightLevelCient 编写搜索查询。另外,我给出的搜索字符串只是一个部分字符串。


添加更多细节。

我正在尝试实现一些我有多个列但只有一个搜索字符串的东西。我的搜索字符串可以是不同列的组合;当字符串只是来自不同列的部分单词的组合时,我的搜索也应该起作用。

我正在尝试一种解决方案来实现此功能,方法是使用一个列,该列是所有其他可搜索列的空格分隔连接,按它们可以出现在搜索中的顺序排列。

因此,如果我有 4 列,书名、作者、价格和出版物,并且当我给出部分作者的部分书名时。我希望以最相关的匹配在顶部的顺序返回匹配。

标签: javaelasticsearchresthighlevelclient

解决方案


也许您可以像这样进行正则表达式搜索:(让字段名称为 "quotes" ):

BoolQueryBuilder searchFilter = QueryBuilders.boolQuery();
searchFilter.must(QueryBuilders.regexpQuery("quotes",".*err is to hum.*").flags(RegexpFlag.ALL));

这将返回包含表达式 "err is to hum" 的所有引号,例如匹配条目可能是 "To err is to human" 。

.*___.* 用于包含搜索(用搜索 exp 代替破折号)

.*___ 以。。结束

___.* 以。。开始

~.*____.* 不包含

希望这可以帮助。


推荐阅读