如何解决如何使用 ElasticSearch 匹配搜索查询中任何现有字段至少一个的值?
我是 ElasticSearch 的新手,我有一个 ElasticSearch 域,我正在使用 Rest 高级客户端进行查询。 ES 域索引如下所示的文档。
{
"firstName": "John","emailId": "someone@gmail.com","application": {
"jobId": "11111","formSection": {
"names": [
"myForm1","myForm2"
],"applicationQuestions": {
"QUESTION1": "NO","QUESTION_XTRA": "EMPLOYEE"
},"boundaryQuestions": {
"QUESTION_EILIGIBILITY": "YES","QUESTION_VALIDITY": "YES"
}
}
}
}
以上是我的服务收到的 json 请求,我在我的域中查找可能与请求匹配的文档。为此,我目前正在创建请求的平面地图,并运行如下所示的术语查询。
public SearchResponse searchDocument(final String indexName,final Map<String,Object> queryMap)
throws IOException {
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
queryMap.forEach((name,value) -> {
queryBuilder.must(QueryBuilders.termQuery(name,value));
});
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(queryBuilder);
SearchRequest searchRequest = new SearchRequest();
searchRequest.indices(indexName);
searchRequest.source(searchSourceBuilder)
return restHighLevelClient.search(searchRequest,RequestOptions.DEFAULT);
}
上面的问题是,当只有一两个字段和它们的值匹配时,搜索将不会返回任何内容(因为术语查询会查找所有匹配的地图条目值)。有没有办法查找所有存在的字段,如果没有,查找可能与平面地图或服务的 JSON 请求中的一个或多个给定字段匹配的值?任何帮助将不胜感激。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。