基于java查询的elasticsearch数据获取

fxnxkyjh  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(333)

我是从 Elasticsearch 使用以下代码编制索引:

SearchRequest request = new SearchRequest("football_sum_csv").scroll(new TimeValue(60000));
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//    searchSourceBuilder.query(matchQuery("multi", "test"));
searchSourceBuilder.size(10000);
searchSourceBuilder.sort(FieldSortBuilder.DOC_FIELD_NAME, SortOrder.ASC);
request.source(searchSourceBuilder);
SearchResponse scrollResp = client.search(request, RequestOptions.DEFAULT);
System.out.println(scrollResp);

这将返回我的索引中的所有数据 ElasticSearch .
在这里,我想 filter 根据我的数据 query . 在我的例子中,我想手动输入query并从中获取结果 ElasticSearch .
例如:
下面的查询将返回如上所示的所有数据

query = {'query': {'bool': {'must': [{'match_all': {}}], 'must_not': [], 'should': []}} }

下面的查询将返回 Country 命名 Spain ```
query = {"query": {"bool": {"must": [{"match_phrase": {"countryName": "Spain"}}], "must_not": [], "should": []}}}

下面的查询将返回 `os` 命名 `Windows` 以及 `sessionTime` 介于 `1000` 以及 `5000` ```
{"query": {"bool": {"must": [{"range": {"sessionTime": {"gte": 1000, "lt": 5000}}}, {"match_phrase": {"os": "Windows"}}], "must_not": [], "should": []}}}

在上述三个查询中,它们在中执行不同的操作 ElasticSearch . 我想像查询一样使用它来获取数据。
如果我把查询放在上面这里 java 代码,

searchSourceBuilder.query({"query": {"bool": {"must": [{"match_phrase": {"countryName": "Spain"}}], "must_not": [], "should": []}}});

它给了我一个错误。我知道 Querybuilders 有许多查询选项,如范围、匹配等。但是我想手动输入上面列出的查询并从 ElasticSearch . 我不知道怎么做。请帮我解决一些问题。

mcvgt66p

mcvgt66p1#

从alexgids的评论中找到了答案: wrapperQuery 需要用作传递查询 json ```
String query = "{"bool": {"must": [{"match_phrase": {"countryName": "Spain"}}], "must_not": [], "should": []}}";
QueryBuilder qb = QueryBuilders.wrapperQuery(query);
SearchSourceBuilder searchSourceBuilder1 = new SearchSourceBuilder();
searchSourceBuilder1.query(qb);
SearchRequest searchRequest = new SearchRequest("index_name");
searchRequest.source(searchSourceBuilder1);
SearchResponse scrollResp1 = client.search(searchRequest, RequestOptions.DEFAULT);
System.out.println(scrollResp1);

相关问题