usa tutorial script results que para fields elastic consultas comandos elasticsearch aggregation

script - elasticsearch tutorial



Agregación Elasticsearch en el objeto (2)

puede usar una secuencia de comandos si lo desea, por ejemplo

"terms":{"script":"doc[''tags.id''].value + ''|'' + doc[''tags.name''].value"}

por cada cubo creado obtendrá una clave con los valores de los campos que ha incluido en su secuencia de comandos. Sin embargo, para ser honesto, el propósito de las agregaciones no es devolver los documentos completos, sino hacer cálculos en grupos de documentos (segmentos) y devolver los resultados, por ejemplo, sumas y valores distintos. Lo que en realidad está haciendo con su consulta es que crea cubos basados ​​en las etiquetas de campo.

Tenga en cuenta que la clave del resultado incluirá ambos valores separados por ''|'' por lo que podría tener que manipular su valor para extraer toda la información que necesita.

¿Cómo puedo ejecutar una consulta de agregación solo en la propiedad del objeto, pero obtener todas las propiedades en el resultado? por ejemplo, quiero obtener [{''doc_count'': 1, ''key'': {''id'': 1, ''name'': ''tag name''}}] , pero tengo [{''doc_count'': 1, ''key'': ''1''] lugar. La agregación en ''etiquetas'' de campo arroja cero resultados.

Cartografía:

{ "test": { "properties" : { "tags" : { "type" : "object", "properties": { "id" : {"type": "string", "index": "not_analyzed"}, "name" : {"type": "string", "index": "not_analyzed", "enabled": false} } } } } }

Consulta de agregación: (solo devuelve ID como se esperaba, pero ¿cómo puedo obtener ID y pares de nombres en los resultados?)

''aggregations'': { ''tags'': { ''terms'': { ''field'': ''tags.id'', ''order'': {''_count'': ''desc''}, }, } }

EDITAR: Obtuve ID y Nombre al agregar en "script": "_source.tags" pero aún "script": "_source.tags" buscando una solución más rápida.


También es posible anidar la agregación, se puede agregar por id, luego por nombre.