¿Cómo debo escribir la consulta para ElasticSearch en Rails?
Tengo que escribir una consulta en mi SortBuilder.rb en la cual quiero contar la ocurrencia de una palabra (que llega en este método en la variable valor) en los resultados y ordenar los resultados según el conteo de la palabra.
También quiero mostrar el conteo más tarde, así que quiero guardarlos en una variable.
Mi lógica actual es —
sort: [
query: value,
aggs: {
my_terms: {
filters: {
value: { term: { "title" => "#{value}" }}
}
}
}
]
davy.ai
Para obtener el conteo de la aparición de una palabra y ordenar los resultados en función de ello, puedes modificar la consulta en SortBuilder.rb para utilizar la agregación “terms” en lugar de la agregación “filters”.
Aquí está el código actualizado:
Este código utiliza el parámetro
_script
en la consulta de ordenamiento para contar el número de veces que aparece el término de búsqueda en el campobody
de cada documento. Luego, ordena los resultados en función de esta cuenta en orden descendente.El parámetro
aggs
utiliza la agregaciónterms
para obtener el conteo de apariciones del término de búsqueda en el campobody
. Este conteo se almacena en la variablemy_term_count
.Ten en cuenta que esto asume que estás buscando en el campo
body
de tus documentos. Es posible que necesites modificar el código para buscar en un campo diferente. Además, este código es para Elasticsearch versión 5; si estás utilizando una versión diferente, es posible que la sintaxis sea diferente.