J'ai reçu une grande quantité de données dans Elasticsearch. Mes doublons ont un champ imbriqué appelé "enregistrements" qui contient une liste d'objets avec plusieurs champs. Je veux pouvoir interroger des objets spécifiques à partir de la liste des enregistrements, et donc j'utilise le champ inner_hits dans ma requête, mais cela n'aide pas parce que l'agrégation utilise la taille 0 donc aucun résultat n'est retourné.Agrégation Elasticsearch sur les hits internes imbriqués
Je n'ai pas réussi à effectuer une agrégation uniquement pour inner_hits, car l'agrégation renvoie des résultats pour tous les objets dans les enregistrements, quelle que soit la requête.
C'est la requête que je utilise: (Chaque document a first_timestamp et champs last_timestamp, et chaque objet dans la liste des enregistrements a un champ d'horodatage)
curl -XPOST 'localhost:9200/_msearch?pretty' -H 'Content-Type: application/json' -d'
{
"index":[
"my_index"
],
"search_type":"count",
"ignore_unavailable":true
}
{
"size":0,
"query":{
"filtered":{
"query":{
"nested":{
"path":"records",
"query":{
"term":{
"records.data.field1":"value1"
}
},
"inner_hits":{}
}
},
"filter":{
"bool":{
"must":[
{
"range":{
"first_timestamp":{
"gte":1504548296273,
"lte":1504549196273,
"format":"epoch_millis"
}
}
}
],
}
}
}
},
"aggs":{
"nested_2":{
"nested":{
"path":"records"
},
"aggs":{
"2":{
"date_histogram":{
"field":"records.timestamp",
"interval":"1s",
"min_doc_count":1,
"extended_bounds":{
"min":1504548296273,
"max":1504549196273
}
}
}
}
}
}
}'
belle! C'est exactement ce que je voulais dire. – hanetz