2012-04-29 21 views
6

Doy mis primeros pasos con ElasticSearch y para probar cosas en las que estoy trabajando actualmente con curl desde la línea de comandos. Sin embargo, es un poco molesto porque tengo que escribir todo en un editor de texto y pegarlo en la consola (sin formatear las pestañas en la consola), y la salida json que obtienes no está formateada.herramientas para trabajar con json y curl desde la consola

Así que me preguntaba si hay algún equivalente de las muchas consolas sql para trabajar con datos json, para que sea más fácil probar y jugar con los servicios web json rest.

¿Qué herramientas usas para este tipo de tareas?

Respuesta

6

En primer lugar, si la salida json que obtiene no está formateada, añada ?pretty=1 a cualquier url. El resultado será mucho mejor. Otra opción es canalizar la salida a python -m json.tool si tiene Python 2.6+. Me gusta la última opción porque la tengo guardada en una función de shell y simplemente puedo escribir | j después de cualquier comando que emita json. Mucho más corto y genérico.

Para emitir comandos curl hay un par de opciones. La solución más universal es crear un script de shell con todo el comando. Por ejemplo:

curl -s localhost:9200/foo/_search -d' 
    {"query": 
    {"query_string": 
     {"query":"foo*"}}}' | python -m json.tool 

En lugar de pegar que el intérprete de comandos, guardarlo en un archivo. Luego solo modifica la fuente y ejecútala tantas veces como necesites.

% sh query 

Una variación de esto es usar Emacs. Lo uso para ejecutar curl en regiones de búferes, manipular el resultado, etc. shell-command-on-region o es una buena opción allí. Entonces, para el script anterior, puedo emitir M-| sh RET en lugar de cambiar a un shell. Vim te permite hacer algo similar.

No he comprobado este, pero a mucha gente parece gustarle elasticsearch-head. Es una interfaz de usuario que emitirá consultas y le dará resultados estructurados. http://mobz.github.com/elasticsearch-head/

actualización: Hace poco se dio cuenta de que los módulos de Perl barcos JSON con una utilidad de línea de comandos útil llamados json_pp de que funcionan de forma similar a Python de json.tool. Si instala JSON::XS, también hay un contenedor (más rápido) json_xs.

+0

muy buena respuesta, un montón de consejos útiles, BTW ya estoy usando la cabeza y es una herramienta maravillosa – opensas

3

he encontrado otra herramienta que parece bastante práctico

http://stedolan.github.com/jq/tutorial/

curl ideasba.org/api/ideas/1 | jq . 

    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
100 525 100 525 0  0 990  0 --:--:-- --:--:-- --:--:-- 2488 
{ 
    "created": "2012-09-22T05:20:00Z", 
    "author": { 
    "nickname": "opensas", 
    "created": "2012-09-22T01:40:00Z", 
    "id": 2, 
... 

Tiene varias opciones para trabajar con JSON, como el filtrado de

curl ideasba.org/api/ideas/1 | jq .votes 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
100 525 100 525 0  0 809  0 --:--:-- --:--:-- --:--:-- 2441 
{ 
    "neg": 1, 
    "pos": 8 
} 
0

Recomiendo encarecidamente Sense plugin for Chrome. Le ofrece autocompletado inteligente, comprobación y ordenamiento de la sintaxis JSON, y una bonita salida resaltada en sintaxis. Se está desarrollando activamente, y es la herramienta que elijo cuando quiero demostrar solicitudes en las conversaciones.

+0

Eso no está basado remotamente en la consola. – cweiske

Cuestiones relacionadas