should query must multiple inside fields elastic dis_max bool elasticsearch

query - Elasticsearch diferencia entre DEBE y DEBE consulta bool



elasticsearch should inside must (3)

Como esta es una pregunta popular, me gustaría agregar que en Elasticsearch versión 2 las cosas cambiaron un poco.

En lugar de una consulta filtered , uno debe usar la consulta bool en el nivel superior.

Si no le importa la puntuación de las partes must , coloque esas partes en la tecla de filter . Sin puntuación significa búsqueda más rápida. Además, Elasticsearch determinará automáticamente si almacenarlos en caché, etc. must_not es igualmente válido para el almacenamiento en caché.

Referencia: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html

Además, tenga en cuenta que "gte": "now" no se puede almacenar en caché, debido a la granularidad de milisegundos. Use dos rangos en una cláusula must : una con now/1h y otra con now para que el primero se pueda almacenar en caché durante un tiempo y el segundo para un filtrado preciso acelerado en un conjunto de resultados más pequeño.

¿Cuál es la diferencia entre MUST y SHOULD consultar bool en ES?

Si SOLO quiero resultados que contengan mis términos, ¿debo usar must ?

Tengo una consulta que solo debe contener ciertos valores, y tampoco resultados que tengan una fecha / marca de tiempo más baja que la fecha / hora de hoy - AHORA

también

¿Puedo usar varios filtros dentro de un must como el código siguiente:

"filtered": { "filter": { "bool" : { "must" : { "term" : { "type" : 1 } "term" : { "totals" : 14 } "term" : { "groupId" : 3 } "range" : { "expires" : { "gte": "now" } } },


Como se dice en la documentation :

Debe: la cláusula (consulta) debe aparecer en los documentos coincidentes.

Debería: La cláusula (consulta) debería aparecer en el documento correspondiente. En una consulta booleana sin cláusulas must, una o más cláusulas must deben coincidir con un documento. El número mínimo de cláusulas debería coincidir se puede establecer utilizando el parámetro minimum_should_match.

En otras palabras, los resultados deberán coincidir con todas las consultas presentes en la cláusula must (o coincidir con al menos una de las cláusulas must si no hay una cláusula must) .

Como desea que sus resultados satisfagan todas las consultas, debe usar must .

De hecho, puede usar filtros dentro de una consulta booleana.


must significa: la cláusula (consulta) debe aparecer en los documentos coincidentes. Estas cláusulas deben coincidir, como lógico AND .

debería significar: Al menos una de estas cláusulas debe coincidir, como OR lógico.

Básicamente se usan como operadores lógicos AND y OR. Mira this .

Ahora en una https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html :

must significa: Cláusulas que deben coincidir para que se incluya el documento.

debería significar: si estas cláusulas coinciden, aumentan la _score ; de lo contrario, no tienen efecto. Simplemente se utilizan para refinar la puntuación de relevancia para cada documento.

Sí, puedes usar múltiples filtros dentro de must .