2011-03-21 16 views
11

¿Cómo podemos construir una consulta para buscar un campo particular para que no sea nulo?Lucene no consulta nula?

field_name:* no funciona. Intenté field_name:[a* to z*] esto funciona bien para inglés, pero no cubre todos los idiomas.

¿Alguna sugerencia alternativa?

Respuesta

4

Lucene no lo admite actualmente. Ver this para una discusión.

Una opción alternativa puede ser almacenar una cadena predefinida (como nullnullnullnull) como el valor del campo si es nulo. Luego puede usar un filtro negativo para eliminar estos registros. (No me gusta mucho, pero no puedo pensar en una mejor opción)

0

Pruebe field:[* TO *] o field:["" TO *]. Pero es probable que sea mejor usar un filtro para esto.

+0

Probé ambos, ninguno funciona. – Chandra

3

Estaba teniendo el mismo problema, pero hay una propiedad que puede establecer en el analizador de consultas que le permite tener caracteres comodín al comienzo de un término de búsqueda.

queryParser.setAllowLeadingWildcard(true); 

Esto resolvió el problema para mí

Por favor, vea Wildcard at the Beginning of a searchterm -Lucene

10

he encontrado que esto funcione en algunos casos field:([0 TO 9] [a TO z])

-1

Me acaban de comenzar a jugar con Lucene (a través de logstash elástica búsqueda) y encontrar que esto parece funcionar desde la interfaz de usuario kibana. Todavía no estoy seguro si esto es algo de inteligencia en la búsqueda elástica o kibana, simplemente sé que la búsqueda elástica toma prestada de la sintaxis de lucene.

application:unit-test && !exception 

devolverá todos los resultados de mis pruebas de unidad que no han tenido una excepción

application:unit-test && exception 

devuelve aquellos que tienen una excepción no nula indexado. por lo que podría intentar simplemente

field 

o

!field