我正在使用Elasticsearch 5.3。其中,我有两个索引,log2
和sessionId
。我想同时对它们进行聚合。它们存储不同的数据,但共享单个字段location
的相同数据。在以下查询中,字段event
和log1
位于logEntryTime
,event
和log2
位于event
。字段INIT
在两个索引中但包含不同的数据。数据EXIT
和log2
仅出现在curl -XGET '127.0.0.1:9200/log1,log2/_search?pretty' -H 'Content-Type: application/json' -d '
{
"aggs": {
"sessions": {
"terms": { "field" : "sessionId" },
"aggs": {
"docs": {
"top_hits": {
"size": 1,
"_source": [ "location" ]
}
},
"event_count": { "value_count" : { "field" : "event" } },
"events" : {
"filters" : {
"filters" : {
"inits" : { "match" : { "event" : "INIT" }},
"exits" : { "match" : { "event" : "EXIT" }}
}
},
"aggs": {
"time": {
"top_hits": {
"size": 1,
"_source": [ "logEntryTime" ]
}
}
}
}
}
}
}
}'
。
location
查询的目的是从log1
获取每个会话ID的事件数和相应的logEntryTime
,并在{{log2
时从event
获取INIT
1}}是EXIT
和log2
。我的查询现在不会返回log1
的任何数据,只有来自{{1}}的部分会返回数据。
问题是什么以及如何解决?