Recibo una cadena de mi usuario que representa una solicitud elástica. Puede haber los siguientes tipos de solicitudes:
Término único: TERM:MATCH_TERM ;
Varios términos separados por AND : TERM:MATCH_TERM AND TERM:MATCH_TERM AND TERM:MATCH_TERM ;
Varios términos separados por OR : `TERM:MATCH_TERM OR TERM:MATCH_TERM OR TERM:MATCH_TERM`` ;
Varios términos separados por AND y OR : TERM:MATCH_TERM AND TERM:MATCH_TERM OR TERM:MATCH_TERM AND TERM:MATCH_TERM OR TERM:MATCH_TERM AND TERM:MATCH_TERM ;
Analizo esta cadena a continuación y obtengo una lista de mis diferentes términos.
Quiero usar esta lista ahora para construir mi consulta elástica. Sé que tendré que usar la sintaxis para consultas complejas: bool . (Uso el cliente javascript de elastic para hacer mi solicitud)
Por lo que entiendo, el filtro must me permitirá hacer un AND y el filtro should me permitirá hacer un OR .
En el caso de que tengamos: TERM1:MATCH_TERM1 AND TERM2:MATCH_TERM2 OR TERM3:MATCH_TERM3 AND TERM4:MATCH_TERM4 OR TERM5:MATCH_TERM5 AND TERM6:MATCH_TERM6 ;
¿Sería la sintaxis correcta algo como esto:
"query":{ "bool":{ "should":[ "must":[ {"terms":{"TERM1":"MATCH_TERM1"}} ] , "must":[ {"terms":{"TERM2":"MATCH_TERM2"}} ] , ], "should":[ "must":[ {"terms":{"TERM3":"MATCH_TERM3"}} ] , "must":[ {"terms":{"TERM4":"MATCH_TERM4"}} ] , ], "should":[ "must":[ {"terms":{"TERM5":"MATCH_TERM5"}} ] , "must":[ {"terms":{"TERM6":"MATCH_TERM6"}} ] , ], } }Si falta alguna información para responder a mi pregunta, hágamelo saber e intentaré agregarla lo antes posible.
Gracias de antemano si se toman el tiempo para ayudarme.