我的彈性中有以下資料。
{
...someData,
languages: [
{
language:{_id: 1, name:"English"}
},
{
language:{_id: 2, name:"Arabic"}
}
]
}
但是當我使用這個查詢聚合資料時
aggs: {
languages: {
terms: {
field: "languages.language._id.keyword",
size: 50
},
aggs: {
value: {
terms: {
field: "languages.language.name.keyword"
}
}
}
}
}
我將獲得帶有 2 個用于阿拉伯語和英語的桶的英語 id,對于阿拉伯語 id 也是如此,因為從技術上講它包含在那里。
有沒有辦法只回傳我需要的物件的數量?
謝謝
uj5u.com熱心網友回復:
您需要將languages欄位定義為嵌套,以便對陣列的單個元素應用聚合。
配置的嵌套欄位:
PUT index0
{
"mappings": {
"properties": {
"languages":{
"type": "nested"
}
}
}
}
樣本檔案索引:
POST index0/_doc
{
"languages": [
{
"language": {
"_id": 1,
"name": "English"
}
},
{
"language": {
"_id": 2,
"name": "Arabic"
}
}
]
}
示例聚合查詢:
{
"size": 0,
"aggs": {
"languages": {
"nested": {
"path": "languages"
},
"aggs": {
"id": {
"terms": {
"field": "languages.language._id",
"size": 10
},
"aggs": {
"name": {
"terms": {
"field": "languages.language.name.keyword",
"size": 10
}
}
}
}
}
}
}
}
結果:
"aggregations" : {
"languages" : {
"doc_count" : 2,
"id" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : 1,
"doc_count" : 1,
"name" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "English",
"doc_count" : 1
}
]
}
},
{
"key" : 2,
"doc_count" : 1,
"name" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [
{
"key" : "Arabic",
"doc_count" : 1
}
]
}
}
]
}
}
}
uj5u.com熱心網友回復:
你試過這個:
aggs: {
languages: {
terms: {
field: "languages.language._id.keyword",
size: 50
},
}
}
您不需要其他聚合。您可以使用doc_count密鑰訪問
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/444284.html
