首页 > 解决方案 > 在单个请求的同一列中进行弹性搜索多个正则表达式搜索?

问题描述

使用 java 客户端进行弹性搜索,我只能使用一种正则表达式模式搜索。目前,我正在使用这样的。

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

但我需要弹性搜索相当于

SELECT NAME FROM USERS WHERE NAME LIKE 'AB%' OR 'SID%'

我正在使用 RestHighLevelClient。有没有办法在同一列中进行多个正则表达式搜索?

提前致谢。

标签: elasticsearchelasticsearch-java-api

解决方案


您需要在 a 中添加两个正则表达式查询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);

推荐阅读