इंडेक्स्ड दस्तावेजों अतिरिक्त फ़ील्ड जोड़ने की तरह हैं:शर्तों एकत्रीकरण ElasticSearch को
{
id: 1,
title: 'Blah',
...
platform: {id: 84, url: 'http://facebook.com', title: 'Facebook'}
...
}
क्या मैं चाहता हूँ की संख्या और उत्पादन आँकड़े-दर-मंच है। गिनती के लिए, मैं शब्दों के एकत्रीकरण platform.id
के साथ एक क्षेत्र के रूप में गिनती करने के लिए उपयोग कर सकते हैं:
aggs: {
platforms: {
terms: {field: 'platform.id'}
}
}
इस तरह से मैं एक बहु {key: 8, doc_count: 162511}
की तरह लग रही बाल्टी के रूप में आँकड़े प्राप्त करते हैं, के रूप में उम्मीद।
अब, क्या मैं किसी भी तरह उन बाल्टी में platform.name
और platform.url
(आंकड़ों के सुंदर आउटपुट के लिए) जोड़ सकता हूं?
aggs: {
platforms: {
terms: {field: 'platform.id'},
aggs: {
name: {terms: {field: 'platform.name'}},
url: {terms: {field: 'platform.url'}}
}
}
}
कौन सा, वास्तव में, काम करता है, और प्रत्येक बकेट में बहुत जटिल संरचना देता है:
{key: 7,
doc_count: 528568,
url:
{doc_count_error_upper_bound: 0,
sum_other_doc_count: 0,
buckets: [{key: "http://facebook.com", doc_count: 528568}]},
name:
{doc_count_error_upper_bound: 0,
sum_other_doc_count: 0,
buckets: [{key: "Facebook", doc_count: 528568}]}},
बेशक, नाम और मंच के URL के
हो सकता है सबसे अच्छा मैंने की तरह दिखता है के साथ आया था इस संरचना से निकाला गया (जैसे bucket.url.buckets.first.key
), लेकिन क्या कार्य करने के लिए और अधिक स्वच्छ और सरल तरीका है?
आप अपनी समस्या के लिए किसी भी समाधान मिल गया है? मुझे अभी भी इसका सामना करना पड़ रहा है :( –
मैंने इसे अपने स्वयं के "स्वीकृत" उत्तर के रूप में नीचे पोस्ट किया :) – zverok