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

标签 elasticsearch elasticsearch-java-api

使用java客户端进行 Elasticsearch 时,我只能使用一个正则表达式模式搜索。现在,我正在使用这种方式。

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

但是我需要等效的 Elasticsearch
SELECT NAME FROM USERS WHERE NAME LIKE 'AB%' OR 'SID%'

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

提前致谢。

最佳答案

您需要在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);

关于elasticsearch - 在单个请求的同一列内进行 Elasticsearch 多个正则表达式搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51168389/

相关文章:

java - 如何使用Node Client连接到elasticsearch中的不同主机

elasticsearch - 如何使用 mockito 模拟构建器模式表达式

elasticsearch - 在跨度优先查询中,我们可以基于存储在ES中的实际字符串来指定 “end”参数,还是必须根据存储在ES中的 token 来指定

elasticsearch - Elasticsearch :限制数组中的搜索结果

java - 如何使用 Java API 根据多个字段对 Elasticsearch 记录进行排序?

java - 使用 Java 更新 elasticsearch 中的多个文档。我正在使用 Elasticsearch 2.3.2

Elasticsearch 监控指标

solr - 是否可以在 Apache Solr 中使用多个索引数据目录?

elasticsearch - 如何在Elasticsearch中查询父子关系

elasticsearch - Elasticsearch Java API:用于文档计数的聚合过滤器