In meinem ES ich ein Schematyp wie diese haben:Elasticsearch Aggregation über innere Objekt
{
"index_v1":{
"mappings":{
"fuas":{
"properties":{
"comment":{
"type":"string"
},
"matter":{
"type":"string"
},
"metainfos":{
"properties":{
"department":{
"type":"string"
},
"processos":{
"type":"string"
}
}
}
}
}
}
}
}
Kurz, hat fuas
Typ zwei Eigenschaften comment
und matter
und einen inneren (nicht verschachtelt) Objekt metainfos
mit mehreren Eigenschaften department
und processos
.
Ich würde gerne wissen, wie viele metainfos' fields
mit seiner Anzahl von Vorkommen informiert werden.
Stellen Sie sich ein Dokument doc1
mit metainfos: {department: "d1"}
und doc2
mit metainfos: {department: "d2", processos: "p1"}
.
Dann würde ich gerne bekommen: {department: 2, processos: 1}
.
EDIT
Als inneres Objekt und da ES schemaless Dokumente metainfos
innere Objekte mehr Felder informiert oder nicht haben können.
So, doc1's metainfos {field1: 1, field3: 3}
und doc2's metainfos {field2: 1, field4: 5}
und doc3's metainfos {field1:2, field4: 2, field5: 1}
.
Ich möchte erhalten: {field1: 2, field2: 1, field3: 1, field4: 2, field5: 1}
. Ich denke, das Hauptproblem, um es zu lösen, ist, wie ich nach Feldern fragen kann, von denen ich nicht weiß, dass sie existieren.
Ich habe mit zwei Dokumente geprüft:
{
"hits":{
"total":2,
"max_score":1.0,
"hits":[
{
"_source":{
"matter":"FUA2",
"comment":null,
"metainfos":[
{
"department":"d1"
}
]
}
},
{
"_source":{
"matter":"FUA1",
"comment":"vcvcvc",
"metainfos":[
{
"department":"d1"
},
{
"processos":"p1"
}
]
}
}
]
}
}
ich dies mit diesem Befehl getestet haben:
curl -XGET 'http://localhost:9201/living_team/fuas/_search?pretty' -d '
{
"size": 0,
"aggregations" : {
"followUpActivity.metainfo.department" : {
"terms" : {
"field" : "metainfos.*"
}
}
}
}
'
Die Ergebnisse waren:
{
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"failed" : 0
},
"hits" : {
"total" : 2,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"followUpActivity.metainfo.department" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ ]
}
}
}
Mein Problem ist mein Mapping dynamisch Ich schaffe, so dass die Felder dieses innered Objekt kann das Hinzufügen eines weiteren Feldes ändern. Also würde ich eine Art zusätzliche Aggregation benötigen, um nach dem Feld im inneren Objekt fragen zu können. – Jordi
Sie können einfach versuchen, '" Feld ":" Metainfos. * "' – Val
Ich habe dies bereits versucht. Ich habe es auf dem Post gemeldet. Es scheint, dass etwas nicht stimmt ... Mache ich etwas falsch? – Jordi