簡體   English   中英

使用java基於查詢從elasticsearch獲取數據

[英]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': []}} }

下面的查詢將返回名為SpainCountry所有數據

query = {"query": {"bool": {"must": [{"match_phrase": {"countryName": "Spain"}}], "must_not": [], "should": []}}}

下面的查詢將返回10005000之間名為WindowssessionTimeos中的所有數據

{"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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM