मैं किबाना संस्करण 6.5.1 का उपयोग कर रहा हूं।

मेरे दस्तावेज़ इस तरह दिखते हैं:

प्रथम

{
"id": 12345,
"source": "Github",
"creation_date": "2020-10-14"
"files": [
 {
    "file_id": 444,
    "file_name": "test.png",
    "file_type": "png"
    },
    {
    "file_id": 445,
    "file_name": "test2.pdf",
    "file_type": "pdf"
    },
    {
    "file_id": 446,
    "file_name": "test3.pdf",
    "file_type": "pdf"
  }
]
}

दूसरा

{
"id": 12346,
"source": "stackoverflow",
"creation_date": "2020-10-14"
"files": [
 {
    "file_id": 447,
    "file_name": "example.pdf",
    "file_type": "pdf"
    },
    {
    "file_id": 448,
    "file_name": "anotherOne.pdf",
    "file_type": "pdf"
  }
]
}

और इसी तरह।

मैं इस तरह दिखने वाली डेटा तालिका बनाना चाहता हूं:

file_type | count
------------------
png       | 1
pdf       | 4

तो बाईं ओर हम files.file_type देख सकते हैं और दाईं ओर सभी दस्तावेज़ों में प्रत्येक की गिनती देख सकते हैं।

मैंने files.file_id की अद्वितीय गणना और files.file_type.keyword फ़ील्ड के एकत्रीकरण की स्प्लिट पंक्तियों का मीट्रिक सेट करने का प्रयास किया है

लेकिन मुझे यह तालिका मिल रही है:

file_type | count
------------------
png       | 3
pdf       | 5

और जैसा कि यह पसंद आया, यह सभी फाइलों को एक दस्तावेज़ में गिनता है यदि उसके पास नेस्टेड 'फाइल' फ़ील्ड में कम से कम एक फ़ाइल है जो file_type से मेल खाती है।

मैं इसे पहली तालिका की तरह कैसे बना सकता हूं? क्या मीट्रिक में JSON इनपुट मदद कर सकता है?

0
BarH 14 अक्टूबर 2020, 18:01

1 उत्तर

सबसे बढ़िया उत्तर

इसे काम करने के लिए आपको अपने "फाइल" फ़ील्ड को नेस्टेड डेटा प्रकार के रूप में मैप करना होगा। फिर नेस्टेड एकत्रीकरण का उपयोग करें।

आपके नमूना डेटा के साथ एक त्वरित उदाहरण:

मानचित्रण:

PUT test/_mapping
{
  "properties": {
    "files": {
      "type": "nested"
    }
  }
}

पूछताछ:

GET test/_search?filter_path=aggregations
{
  "size": 0, 
  "aggs": {
    "files_nested": {
      "nested": {
        "path": "files"
      },
      "aggs": {
        "files_type": { "terms": { "field": "files.file_type.keyword" } }
      }
    }
  }
}

प्रतिक्रिया:

{
  "aggregations" : {
    "files_nested" : {
      "doc_count" : 5,
      "files_type" : {
        "doc_count_error_upper_bound" : 0,
        "sum_other_doc_count" : 0,
        "buckets" : [
          {
            "key" : "pdf",
            "doc_count" : 4
          },
          {
            "key" : "png",
            "doc_count" : 1
          }
        ]
      }
    }
  }
}
0
Jaycreation 15 अक्टूबर 2020, 09:35