在单个请求的同一列内进行弹性搜索多个正则表达式搜索?

时间:2018-07-04 07:45:37

标签: elasticsearch elasticsearch-java-api

使用java客户端进行弹性搜索,我只能使用一个正则表达式模式搜索。现在,我正在像这样使用。

searchSourceBuilder.query(QueryBuilders.regexpQuery("name", "AB.*"));

但是我需要等价于

的弹性搜索
SELECT NAME FROM USERS WHERE NAME LIKE 'AB%' OR 'SID%'

我正在使用RestHighLevelClient。有什么方法可以在同一列中进行多个正则表达式搜索?

谢谢。

1 个答案:

答案 0 :(得分:1)

您需要在bool/should内添加两个正则表达式查询:

QueryBuilder first = QueryBuilders.regexpQuery("name", "AB.*");
QueryBuilder second = QueryBuilders.regexpQuery("name", "SID.*");
QueryBuilder boolQuery = QueryBuilders.boolQuery()
   .should(first)
   .should(second);
searchSourceBuilder.query(boolQuery);