У меня есть запрос ElasticSearch, с помощью которого я получаю данные через Kibana. Мне также требуется такой же запрос в моем приложении Java. Запрос, сгенерированный Kibana, выглядит следующим образом:
{
"version": true,
"size": 500,
"sort": [
{
"@timestamp": {
"order": "desc",
"unmapped_type": "boolean"
}
}
],
"_source": {
"excludes": []
},
"aggs": {
"2": {
"date_histogram": {
"field": "@timestamp",
"fixed_interval": "30s",
"time_zone": "Europe/Berlin",
"min_doc_count": 1
}
}
},
"stored_fields": [
"*"
],
"script_fields": {},
"docvalue_fields": [
{
"field": "@timestamp",
"format": "date_time"
}
],
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "ORDERID=120019",
"analyze_wildcard": true,
"time_zone": "Europe/Berlin"
}
}
],
"filter": [
{
"match_phrase": {
"service": {
"query": "some-service-app"
}
}
},
{
"range": {
"@timestamp": {
"format": "strict_date_optional_time",
"gte": "2020-02-24T09:12:41.685Z",
"lte": "2020-02-24T09:27:41.685Z"
}
}
}
],
"should": [],
"must_not": []
}
},
"highlight": {
"pre_tags": [
"@kibana-highlighted-field@"
],
"post_tags": [
"@/kibana-highlighted-field@"
],
"fields": {
"*": {}
},
"fragment_size": 2147483647
}
}
Я пытаюсь составить тот же запрос, используя ElasticSearch Java API, но получаю совершенно разные результаты, которые вообще не соответствуют ожидаемому результату.
Не могли бы вы помочь мне найти правильный? То, как я делаю это сейчас, приведено ниже.
final QueryBuilder query = QueryBuilders.boolQuery()
.must(QueryBuilders.simpleQueryStringQuery("some-service-app").field("service"))
.must(QueryBuilders.simpleQueryStringQuery("INFO").field("severity"))
.must(QueryBuilders.rangeQuery("@timestamp").from(now.minusDays(15)))
.must(QueryBuilders.simpleQueryStringQuery("ORDERID=120019"));
final SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(query);
final SearchRequest searchRequest = new SearchRequest(targetIndexName);
searchRequest.source(sourceBuilder);
final SearchResponse search = client.search(searchRequest, RequestOptions.DEFAULT);
К сожалению, мой код возвращает неверные результаты даже при неправильных значениях "service".
Не могли бы вы помочь мне выровнять мой Java запрос с JSON один?