Saltar al contenido

Debe coincidir con varios valores

Indagamos en todo el mundo on line para traerte la solución a tu duda, si continúas con preguntas deja un comentario y te contestamos con gusto, porque estamos para ayudarte.

Solución:

Si el documento “debe” ser devuelto solo si el id es 1 o 2, eso suena a otro should cláusula. Si entiendo su pregunta correctamente, quiere documentos con id 1 O id 2. Además, si el color es amarillo, asígnele una puntuación más alta.

Aquí hay una forma en que puede lograr lo que está buscando:


  "query": 
    "bool": 
      "should": 
        "match": 
          "fruit.color": "yellow"
        
      ,
      "must": 
        "bool": 
          "should": [
            
              "match": 
                "fruit.id": "1"
              
            ,
            
              "match": 
                "fruit.id": "2"
              
            
          ]
        
      
    
  

Aquí pongo los dos match consultas en el should cláusula de un separado bool consulta. Esto logra el comportamiento OR que está buscando.

Eche otro vistazo a la documentación de Bool Query y tome nota de los matices de should. Se comporta de forma diferente por defecto dependiendo de si hay un hermano o no must cláusula y si la bool la consulta se está ejecutando en contexto de filtro.

Otro key La opción que es ajustable y puede ayudarlo a lograr los resultados esperados es el minimum_should_match parámetro. Echa un vistazo a esta página de documentación.

En lugar de una consulta de coincidencia, simplemente puede probar el terms consulta por ORing entre múltiples términos.

Las consultas de coincidencia se utilizan generalmente para analyzed los campos. Para una coincidencia exacta, debe usar term queries


  "from": 0, 
  "size": 20,
  "query": 
    "bool": 
      "should": [
         "match":  "fruit.color": "yellow"  
      ],
      "must" : [ 
         "terms":  "fruit.id": ["1","2"]  
      ]
    
   

término o consulta de términos es la manera perfecta de obtener el text o idutilizando el resultado de la consulta de coincidencia en la búsqueda dentro de la identificación o el texto

Ej: id = ‘4’ id = ’44’

La búsqueda usando la consulta de coincidencia con id = 4 devuelve 4 y 44 ya que coincide con 4 en ambos. Aquí es donde entra en juego la consulta de términos. la misma búsqueda usando la consulta de términos devolverá solo 4.

Entonces lo aceptado es absolutamente incorrecto. Usa la respuesta de @Rahul. Solo una cosa más que debe hacer, en lugar de texto, debe analizar el campo como una palabra clave

Ejemplo para indexar un campo como texto y palabra clave (el mapeo es para nivel plano para anidado, cámbielo en consecuencia).


    "index_patterns": [ "test" ],
    "mappings": 
        "kb_mapping_doc": 
            "_source": 
                "enabled": true
            ,
            "properties": 
                "id": 
                    "type": "text",
                    "fields": 
                        "keyword": 
                            "type": "keyword"
                        
                    
                
            
        
    

usar la respuesta de @Rahul no funcionó porque es posible que lo analicen como texto.

  • id – acceder a un campo de texto
  • id.keyword – accede a un campo de palabra clave

podría ser


    "from": 0,
    "size": 20,
    "query": 
        "bool": 
            "should": [
                "match": 
                    "color": "yellow"
                
            ],
            "must": [
                "terms": 
                    "id.keyword": ["1", "2"]
                
            ]
        
    

Por lo tanto, diría que la respuesta aceptada arrojará resultados falsos. Utilice la respuesta de @Rahul con el mapeo correspondiente.

Aquí puedes ver las reseñas y valoraciones de los lectores

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *