Estoy intentando usar ElasticSearch para análisis, específicamente para rastrear el "contenido superior" para Rails CMS enrollados a mano. El requisito es un poco más complicado que mantener un contador para cada contenido. No entraré en la profundidad del problema en este momento, ya que no puedo lograr que funcionen los conceptos básicos.Problema con los recuentos de facetas
Mi problema es este: estoy usando facetas y los recuentos no son lo que espero que sean. Por ejemplo:
Consulta:
{"facets":{"el_ids":{"terms":{"field":"el_id","size":1,"all_terms":false,"order":"count"}}}}
Resultado:
{"el_ids":{"_type":"terms","missing":0,"total":16672,"other":16657,"terms":[{"term":"quis","count":15}]}}
Ok, grande, la pieza de contenido con id "quis" tenía 15 hits y desde el order
es count
, lo que debería ser mi parte superior de contenido. Ahora vamos a obtener las 5 mejores piezas de contenido.
Consulta:
{"facets":{"el_ids":{"terms":{"field":"el_id","size":5,"all_terms":false,"order":"count"}}}}
Resultado (sólo la faceta):
[
{"term":"qgz9","count":26},
{"term":"quis","count":15},
{"term":"hnqn","count":15},
{"term":"higp","count":15},
{"term":"csns","count":15}
]
Huh? Entonces, ¿el contenido w/id "qgz9" tuvo más hits con 26? ¿Por qué no fue el resultado principal en la primera consulta?
De acuerdo, consigamos los mejores 100 ahora.
Consulta:
{"facets":{"el_ids":{"terms":{"field":"el_id","size":100,"all_terms":false,"order":"count"}}}}
Resultados (sólo la faceta):
[
{"term":"qgz9","count":43},
{"term":"difc","count":37},
{"term":"zryp","count":31},
{"term":"u65r","count":31},
{"term":"sxsi","count":31},
...
]
Así que ahora "qgz9" cuenta con 43 golpes en lugar de 26? ¿Como puede ser? Puedo asegurarle que no pasa nada en segundo plano modificando el índice. Si repito estas consultas, obtengo los mismos resultados.
Al repetir este proceso de aumentar el tamaño del resultado, los recuentos continúan cambiando y los nuevos identificadores de contenido emergen en la parte superior. ¿Puede alguien explicarme qué estoy haciendo mal o dónde está mal mi comprensión de cómo funciona?
Esta no es la mejor manera de lograr eso. Sharding es una característica muy importante de Elasticsearch. Es posible que pierda mucho rendimiento si solo considera 1 fragmento. – eliasah