Я получил данные из индекса 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
. В моем случае я хочу вручную ввести запрос и получить результаты от 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
. Я не знаю, как это сделать. Пожалуйста, помогите мне с некоторыми решениями.