2012-08-30 19 views
16

Estoy experimentando con la búsqueda elástica a través del plugin Elastic Search Head.Diferente resultado al usar GET/POST en la búsqueda elástica

Los resultados son los esperados cuando envío una consulta a través de POST.

Sin embargo, cuando intento la misma consulta usando GET, siempre obtengo todos los valores en el índice.

Entonces, ¿cómo pasar la consulta al servidor de búsqueda elástica a través de GET para que pueda usar la cadena de búsqueda en una URL?

Respuesta

27

Si envía un GET probablemente el cuerpo no se envíe a elasticsearch, por lo que básicamente no envía consultas al _search endpoint, por lo que está recuperando todo (por supuesto, solo los primeros 10 resultados basados ​​en parámetro de tamaño predeterminado).

Eche un vistazo a URI request, que le permite enviar consultas básicas utilizando el parámetro q dentro del URI. Puede usar el Lucene query syntax y especificar algunos otros parámetros enumerados en la página vinculada. Si luego desea ejecutar consultas más avanzadas, puede expresarlas como consultas JSON para obtener todos los beneficios de elasticsearch Query DSL, pero deberá proporcionarlos como cuerpo de la solicitud.

ACTUALIZACIÓN
Mirando más profundamente en el plugin de cabeza elasticsearch, la consulta no se envía como el cuerpo de la petición cuando se selecciona el método GET, pero dentro de la propia URL y sin especificar el nombre del parámetro, así:

http://localhost:9200/_search&{"query":{"term":{"text":"john"}}} 

Probablemente sea un error en el plugin y elasticsearch no puede encontrar la consulta, es por eso que recupera todos los resultados. Eso significa que solo el método POST funciona al enviar consultas con elasticsearch head.

Elasticsearch permite usar tanto GET como POST para ejecutar consultas. Si utiliza GET usted puede enviar la consulta como cuerpo o usar el parámetro de origen como esto:

http://localhost:9200/_search?source={"query":{"term":{"text":"john"}}} 
+0

Los estados HTTPHeader que estoy hecho de enviar la consulta, pero no en la sintaxis de consulta de Lucene. Simplemente extraño, puede formar una consulta y se le presenta la opción GET, cuando no funciona ... – Peter

+0

Eche un vistazo a mi respuesta actualizada. – javanna

+0

tx para la actualización! – Peter

Cuestiones relacionadas