Intento obtener documentos con la lista específica de términos, como este:

GET /_search
{
    "query" : {
        "terms" : {
            "md5" : ["file_1", "file_2"]
        }
    }
}

¿Es posible limitar los resultados de ElasticSearch ¡Solo en un documento para cada término? Para que, como resultado, debería tener un documento para "file_1" , un documento para "file_2" y así sucesivamente.

Lo que trato de lograr es obtener elasticsearch _id del documento más reciente para cada término en la lista. ¿Puedo hacer esto de esta manera o es necesario solicitar una solicitud por separado para cada término?

0
Vege Table 26 jun. 2019 a las 20:04

1 respuesta

La mejor respuesta

Tiene dos formas diferentes de obtener los documentos n para cada término.

  • Una forma es realizando una solicitud para cada término.

  • La otra forma es mediante el uso de la agregación de Top Hits (consulte la documentación aquí).

    GET /_search
    {
        "query" : {
            "terms" : {
                "md5" : ["file_1", "file_2"]
            }
        },
        "aggs": {
            "top-docs": {
                "terms": {
                    "field": "md5",
                    "size": 3
                },
                "aggs": {
                    "top_tag_hits": {
                        "top_hits": {
                            "size" : 1
                        }
                    }
                }
            }
        }
    }
    
0
Jorge 26 jun. 2019 a las 17:43