Digamos que tenemos una consulta de Elasticsearch con claves de enrutamiento [manzana, oso, melocotón]. Las claves de enrutamiento apple y bear se asignan al fragmento 1, mientras que peach se asigna al fragmento 2. Cuando se envíen, ¿se enviarán 2 consultas independientes al fragmento 1 o habrá una única? consulta consolidada al fragmento 1 porque ES ha realizado la optimización internamente?

Imagine que la consulta enviada al fragmento 1 coincide con doc1 y doc2. ¿Recibirá el fragmento primario [doc1, doc2] del fragmento 1 o [doc1, doc2, doc1, doc2] porque se envían consultas independientes? Si es lo último, ¿ES filtrará los documentos duplicados?

Leí los documentos de ES sobre enrutamiento pero no hay suerte.

1
hackjutsu 27 oct. 2020 a las 03:05

1 respuesta

La mejor respuesta

El propósito principal de la función de enrutamiento es reducir el efecto de llamar a todos los fragmentos de índices. suponga que tiene índices con 10 fragmentos en 10 nodos. cuando busca contra índices, está utilizando RAM, CPU y E / S de 10 nodos. con esta función, solo llama al fragmento / nodo que tiene su información.

Basándose en el ejemplo, suponga que llama a /_search/routing=apple,bear. Solo se enviará una consulta de búsqueda al nodo coordinador. El nodo coordinador verifica qué nodo de datos tiene este parámetro de ruta en su fragmento y solo enviará una solicitud a ese nodo de datos y fragmento 1. para que no haya un duplicado.

Suponga que llama a /_search/routing=apple,peach. esto es lo mismo que el anterior, pero el coordinador enviará una solicitud al fragmento 1 y el fragmento 2. nuevamente si no ha duplicado el documento en el fragmento 1 y el fragmento 2, no habrá una respuesta duplicada.

1
hamid bayat 4 nov. 2020 a las 06:45