我有 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);
不幸的是,即使“服务”值错误,我的代码也会返回错误的结果。
您能帮我将我的 Java 请求与 JSON 对齐吗?