Saltar al contenido

Buscar nombre (texto) con espacios en elasticsearch

Agradecemos tu ayuda para extender nuestros tutoriales sobre las ciencias informáticas.

Solución:

Puede utilizar el tipo de campo múltiple, un bool consulta y la consulta de factor de impulso personalizado para resolver este problema.

Cartografía:


    "mappings" : 
        "user" :         
            "properties" : 
                "name": 
                    "type": "multi_field",
                    "fields": 
                        "name":  "type" : "string", "index": "analyzed" ,
                        "exact":  "type" : "string", "index": "not_analyzed" 
                    
                
            
        
    

Consulta:


    "query": 
        "bool": 
            "must": [
                
                    "match": 
                        "name": "Maaz Tariq"
                    
                
            ],
            "should": [
                
                    "custom_boost_factor": 
                        "query": 
                            "term": 
                                "name.exact": "Maaz Tariq"
                            
                        ,
                        "boost_factor": 15
                    
                ,
                
                    "custom_boost_factor": 
                        "query": 
                            "prefix": 
                                "name.exact": "Maaz Tariq"
                            
                        ,
                        "boost_factor": 10
                    
                ,
                
                    "custom_boost_factor": 
                        "query": 
                            "match_phrase": 
                                "name": 
                                    "query": "Maaz Tariq",
                                    "slop": 0
                                
                            
                        ,
                        "boost_factor": 5
                    
                
            ]
        
    

editar:

Como señaló javanna, el custom_boost_factor no es necesario

consulta sin custom_boost_factor:


    "query": 
        "bool": 
            "must": [
                
                    "match": 
                        "name": "Maaz Tariq"
                    
                
            ],
            "should": [
                
                    "term": 
                        "name.exact": 
                            "value": "Maaz Tariq",
                            "boost": 15
                        
                    
                ,
                
                    "prefix": 
                        "name.exact": 
                            "value": "Maaz Tariq",
                            "boost": 10
                        
                    
                ,
                
                    "match_phrase": 
                        "name": 
                            "query": "Maaz Tariq",
                            "slop": 0,
                            "boost": 5
                        
                    
                
            ]
        
    

valoraciones y reseñas

Te invitamos a patrocinar nuestra misión exponiendo un comentario y puntuándolo te damos las gracias.

¡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 *