嵌套字段上的 Elasticsearch 复合聚合查询
Elasticsearch composite aggregate query on nested fields
我对嵌套对象的聚合有疑问。
文档如下:
{
"features": [{
"key": "key1",
"values": ["A", "B"]
},
{
"key": "key2",
"values": ["C", "D"]
},
{
"key": "key2",
"values": ["E"]
}
]
}
其中 'features' 是嵌套对象。
我可以聚合并从键和值中获取不同的值,但我需要在需要的地方获得组合的桶聚合:
key1 -> A,B
键 2 -> C、D、E
是否必须使用复合聚合?或者哪个是正确的聚合使用?
Java也欢迎样品!
谢谢!!!
你真的不需要 composite
。以下应该没问题:
{
"size": 0,
"aggs": {
"nested_aggs": {
"nested": {
"path": "features"
},
"aggs": {
"by_key": {
"terms": {
"field": "features.key.keyword"
},
"aggs": {
"by_values": {
"terms": {
"field": "features.values.keyword"
}
}
}
}
}
}
}
}
假设您的映射如下所示
{
"mappings":{
"properties":{
"features":{
"type":"nested",
"properties":{
"key":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"values":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
}
}
}
}
}
}
我对嵌套对象的聚合有疑问。 文档如下:
{
"features": [{
"key": "key1",
"values": ["A", "B"]
},
{
"key": "key2",
"values": ["C", "D"]
},
{
"key": "key2",
"values": ["E"]
}
]
}
其中 'features' 是嵌套对象。 我可以聚合并从键和值中获取不同的值,但我需要在需要的地方获得组合的桶聚合:
key1 -> A,B 键 2 -> C、D、E
是否必须使用复合聚合?或者哪个是正确的聚合使用? Java也欢迎样品!
谢谢!!!
你真的不需要 composite
。以下应该没问题:
{
"size": 0,
"aggs": {
"nested_aggs": {
"nested": {
"path": "features"
},
"aggs": {
"by_key": {
"terms": {
"field": "features.key.keyword"
},
"aggs": {
"by_values": {
"terms": {
"field": "features.values.keyword"
}
}
}
}
}
}
}
}
假设您的映射如下所示
{
"mappings":{
"properties":{
"features":{
"type":"nested",
"properties":{
"key":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
},
"values":{
"type":"text",
"fields":{
"keyword":{
"type":"keyword",
"ignore_above":256
}
}
}
}
}
}
}
}