使用Java API的Elasticsearch多条件查询 [英] Elasticsearch multiple condition query using java api

查看:148
本文介绍了使用Java API的Elasticsearch多条件查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有多个文档,每个文档包含大约100个字段.我想通过弹性搜索Java API 5.x执行以下搜索:

There are multiple documents containing around 100 fields each. I'd like to perform a following search trough elasticsearch Java API 5.x:

我想在此搜索中使用3个字段,即

There are 3 fields I'd like to use for this search i.e.

department
job
name

我想搜索与部门:D1",部门:D2",工作:J1",工作:J2",名称:N1"等字段匹配的退货文件

I'd like to search the return documents that match fields like "department: D1", "department: D2", "job: J1", "job: J2" "name: N1"

我一直在尝试这种方式

String[] departments = ["d1","d2","d3"];
String[] jobs = ["j1","j2","j3"];
String[] names = ["n1"];

MultiSearchRequestBuilder requestbuilder; 

requestBuilder.add(client.prepareSearch().setQuery(QueryBuilders.termsQuery("department", departments)));
requestBuilder.add(client.prepareSearch().setQuery(QueryBuilders.termsQuery("job", jobs)));
requestBuilder.add(client.prepareSearch().setQuery(QueryBuilders.termsQuery("name", names)));

MultiSearchResponse response = requestBuilder.get();

但是查询的执行就像每个查询都是单独的查询一样,即在本示例中,当d4中存在j3时,具有d4的文档也会被匹配

However the queries are executed as if each was an individual query, i.e. in this example when j3 exists in d4, the document with d4 will be matched aswell

如何按照我提到的方式执行搜索?我一直在尝试许多不同的查询,但似乎没有任何效果,我缺少什么吗?

How to perform the search the way I mentioned? I've been trying numerous different queries and nothing seems to work, is there something I am missing?

推荐答案

您不想使用 MultiSearchRequestBuilder ,您只需要在 bool/filter 查询:

You don't want to use MultiSearchRequestBuilder, you simply need to combine your three constraints in a bool/filter query:

BoolQueryBuilder query = QueryBuilders.boolQuery()
   .filter(QueryBuilders.termsQuery("department", departments))
   .filter(QueryBuilders.termsQuery("job", jobs))
   .filter(QueryBuilders.termsQuery("name", names));
SearchResponse resp = client.prepareSearch().setQuery(query).get();

这篇关于使用Java API的Elasticsearch多条件查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆