![](/img/trans.png)
[英]query data from elasticsearch using java highlevelrestclient
[英]Getting data from elasticsearch based on query using java
我使用以下代碼從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
索引中返回所有數據。
在這里,我想根據我的query
filter
一些數據。 就我而言,我想手動輸入查詢並從ElasticSearch
獲取結果。
例如:
下面的查詢將返回如上所示的所有數據
query = {'query': {'bool': {'must': [{'match_all': {}}], 'must_not': [], 'should': []}} }
下面的查詢將返回名為Spain
的Country
所有數據
query = {"query": {"bool": {"must": [{"match_phrase": {"countryName": "Spain"}}], "must_not": [], "should": []}}}
下面的查詢將返回1000
到5000
之間名為Windows
和sessionTime
的os
中的所有數據
{"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
獲取我的數據。 我不知道怎么做。 請幫我解決一些問題。
從 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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.