Привет профи Elasticsearch ,
Я новичок в этой области, поэтому я действительно не знаю, как с этим справиться ... У меня есть следующие утверждения в Elastic.
{"statement": {"id": "1a", "type": "cook", "actor": "user1", "timestamp": "2016-11-29T10:14:19.180600+00:00"}},
{"statement": {"id": "1b", "type": "cook", "actor": "user1", "timestamp": "2016-11-29T15:03:59.907900+00:00"}},
{"statement": {"id":"1c", "type": "cook", "actor": "user2", "timestamp": "2016-11-29T15:21:48.873300+00:00"}},
{"statement": {"context": "1a", "type": "sleep", "actor": "user1", "timestamp": "2016-11-29T14:50:29.088900+00:00"}},
{"statement": {"context": "1b", "type": "sleep", "actor": "user1", "timestamp": "2016-11-29T15:06:38.894700+00:00"}},
{"statement": {"context":"1c", "type": "sleep", "actor": "user2", "timestamp": "2016-11-29T15:23:12.020700+00:00"}}
Затем я создаю 2 ведра, сгруппированных по типу ...
{
"size": 0,
"query": {
"bool": {
"should" : [
{ "term" : { "statement.type" : "cook" } },
{ "term" : { "statement.type" : "sleep" } }
]
}
},
"aggs": {
"cook_": {
"filter" : {
"term" : {
"statement.type" : "cook"
}
},
"aggs": {
"user":{
"terms" : { "field" : "statement.actor" },
"aggs": {
"object":{"terms" : { "field" : "statement.id" }
}
}
}
}
},
"sleep_": {
"filter" : {
"bool" : {
"should" : [
{ "term" : {"statement.type" : "sleep"}}
]
}
},
"aggs": {
"user":{
"terms" : {
"field" : "statement.actor"
},
"aggs": {
"object":{"terms" : { "field" : "statement.context" }
}
}
}
}
}
}
}
Это ответ [цифры поддельные]:
{
"took": 290,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 52368,
"max_score": 0,
"hits": []
},
"aggregations": {
"cook_": {
"doc_count": 14263,
"user": {
"doc_count_error_upper_bound": 3,
"sum_other_doc_count": 1822,
"buckets": [
{
"key": "user1",
"doc_count": 329,
"object": {
"doc_count_error_upper_bound": 5,
"sum_other_doc_count": 466,
"buckets": [
{
"key": "1a",
"doc_count": 12
},
{
"key": "1b",
"doc_count": 12
}
]
}
},
{
"key": "user2",
"doc_count": 5329,
"object": {
"doc_count_error_upper_bound": 5,
"sum_other_doc_count": 4626,
"buckets": [
{
"key": "1c",
"doc_count": 12
}
]
}
}
]
}
},
"sleep_": {
"doc_count": 14163,
"user": {
"doc_count_error_upper_bound": 3,
"sum_other_doc_count": 1822,
"buckets": [
{
"key": "user1",
"doc_count": 39,
"object": {
"doc_count_error_upper_bound": 5,
"sum_other_doc_count": 466,
"buckets": [
{
"key": "1a",
"doc_count": 12
},
{
"key": "1b",
"doc_count": 12
}
]
}
},
{
"key": "user2",
"doc_count": 5329,
"object": {
"doc_count_error_upper_bound": 5,
"sum_other_doc_count": 466,
"buckets": [
{
"key": "1c",
"doc_count": 12
}
]
}
}
]
}
}
}
}
теперь яЯ хочу получить список из 3, в котором следует сравнивать сегменты ... "bucket1.id == bucket2.context".Я ведро 3 должно иметь результаты только с Statement.context, из которых также есть Statement.id.кто-нибудь может помочь ??
дать мне каждой записи из bucket1 соответствующий дочерний элемент в bucket2