Elasticsearch с двойным вложением не работает
Я пытаюсь выполнить агрегирование терминов в поле "AB", которое находится в "парах" (вложенный тип), в пределах "window_size" (вложенный тип)
Я попытался сделать Вложенную агрегацию, содержащую другую Вложенную агг, которая содержит мою Агрегацию Условий Я не получаю никаких результатов (запрос ниже).
Я также попытался сделать это с помощью одной вложенной агрегации в паре, содержащей агрегацию условий на AB, не сработало. Также попробовал это с вложенной аггой на window_size, не сработало.
Я использую Ruflin Elastica для построения запроса в PHP.
Определение индекса:
"_index": "ldna-2",
"_type": "document",
"_id": "A00007",
"_version": 1,
"_score": 1,
"_source": {
"window_size": [
{
"start": 0,
"end": 50,
"pairs": {
"story_n-AScanius_n": {
"A-B": "story_n-AScanius_n",
"A": "story_n",
"B": "AScanius_n",
"AoccuranceBaseline": "91873",
"ANodeOccuranceCorpus": "2408",
"InWindow": "55417",
"BaselineTotal": "281628304",
"BoccuranceBaseline": "3",
"BNodeOccuranceCorpus": "1",
"ABPairOccuranceCorpus": "1"
},
"book_n-AScanius_n": {
"A-B": "book_n-AScanius_n",
"A": "book_n",
"B": "AScanius_n",
"AoccuranceBaseline": "527316",
"ANodeOccuranceCorpus": "17747",
"InWindow": "396063",
"BaselineTotal": "281628304",
"BoccuranceBaseline": "3",
"BNodeOccuranceCorpus": "1",
"ABPairOccuranceCorpus": "1"
},
"call_v-AScanius_n": {
"A-B": "call_v-AScanius_n",
"A": "call_v",
"B": "AScanius_n",
"AoccuranceBaseline": "1555723",
"ANodeOccuranceCorpus": "48328",
"InWindow": "561727",
"BaselineTotal": "154622540",
"BoccuranceBaseline": "3",
"BNodeOccuranceCorpus": "1",
"ABPairOccuranceCorpus": "2"
},
Запрос:
"query" : {
"range" : {
"year" : {
"from" : "1000",
"to" : "2000",
"include_lower" : true,
"include_upper" : false,
"boost" : 1.0
}
}
},
"aggregations" : {
"NestedAggWindow" : {
"nested" : {
"path" : "window_size"
},
"aggregations" : {
"NestedAggPairs" : {
"nested" : {
"path" : "window_size.pairs"
},
"aggregations" : {
"A-B" : {
"terms" : {
"field" : "window_size.pairs.A-B.keyword",
"size" : 10,
"min_doc_count" : 1,
"shard_min_doc_count" : 0,
"show_term_doc_count_error" : false,
"order" : [
{
"_count" : "desc"
},
{
"_term" : "asc"
}
]
}
}
}
}
}
}
}
Elastica запрос:
$nestedAggWindow = new Nested("NestedAggWindow", "window_size");
$nestedAggPairs = new Nested("NestedAggPairs", "window_size.pairs");
$termsAgg = new Terms("A-B");
$termsAgg->setField("window_size.pairs.A-B.keyword");
$nestedAggPairs->addAggregation( $termsAgg );
$nestedAggWindow->addAggregation( $nestedAggPairs );
$query->addAggregation( $nestedAggWindow );
$search->setQuery($query);