Java 如何使用RESTHightLevelCient使用多个字符串执行搜索
我有一个包含多个字符串的字段,如何使用RESTHightLevelCient为其编写搜索查询。另外,我给出的搜索字符串只是一个部分字符串Java 如何使用RESTHightLevelCient使用多个字符串执行搜索,java,
elasticsearch,resthighlevelclient,Java,
elasticsearch,Resthighlevelclient,我有一个包含多个字符串的字段,如何使用RESTHightLevelCient为其编写搜索查询。另外,我给出的搜索字符串只是一个部分字符串 再加一点细节 我正在尝试实现一些东西,其中我有多个列,但只有一个搜索字符串。我的搜索字符串可以是不同列的组合;另外,当字符串只是来自不同列的部分单词的组合时,我的搜索应该可以工作 我正在尝试一种解决方案,通过使用一个单独的列,它是所有其他可搜索列按其在搜索中出现的顺序以空格分隔的连接 所以如果我有4列,书名,作者,价格,出版,当我给部分作者的部分书名。我希望
再加一点细节 我正在尝试实现一些东西,其中我有多个列,但只有一个搜索字符串。我的搜索字符串可以是不同列的组合;另外,当字符串只是来自不同列的部分单词的组合时,我的搜索应该可以工作 我正在尝试一种解决方案,通过使用一个单独的列,它是所有其他可搜索列按其在搜索中出现的顺序以空格分隔的连接
所以如果我有4列,书名,作者,价格,出版,当我给部分作者的部分书名。我希望按照最相关的匹配项位于顶部的顺序返回匹配项。可能是,您可以这样执行regexp搜索:(让字段名为“quotes”): 这将返回包含表达式“err is to hum”的所有引号,例如,匹配条目可以是“to err is to human”
*\uuuuu.*
用于包含搜索(将搜索表达式置于破折号位置)
*\uuuuuu
以结尾
。*
以开头
不包含
希望这有帮助。如果搜索字符串为“er-hum”,该怎么办。另外,最好的方法是使用“*”吗?为什么不使用简单的匹配查询?我遗漏了什么吗?你能给我举个例子吗?
BoolQueryBuilder searchFilter = QueryBuilders.boolQuery();
searchFilter.must(QueryBuilders.regexpQuery("quotes",".*err is to hum.*").flags(RegexpFlag.ALL));