弹性搜索:将漂亮格式设为默认格式

时间:2013-04-04 14:34:17

标签: elasticsearch

有没有办法让curl命令的JSON输出默认打印漂亮?也就是说,如果没有为curl URL指定?pretty=true选项,是否可以每次都显示相当漂亮的输出?

3 个答案:

答案 0 :(得分:11)

我能够通过向我的.bashrc(或Mac上的.bash_profile)添加一个新别名来实现这一目标:

alias pp='python -mjson.tool'

然后,通过打开新终端或运行

重新加载.bashrc / .bash_profile配置
$ source ~/.bashrc

您可以将curl输出管道输出到'pp'别名,如下所示:

$ curl -XGET http://localhost:9200/_search | pp

来源:http://ruslanspivak.com/2010/10/12/pretty-print-json-from-the-command-line/

答案 1 :(得分:2)

在大多数情况下,您使用其他产品的REST API(JQuery,PHP,Perl,Ruby ......)。这些框架不需要很好的输入。 因此,我假设在99%的请求中,您不希望通过漂亮呈现JSON来减慢您的请求。

恕我直言,你在调试或开发模式时只需要漂亮的打印。

选项可以是将其作为elasticsearch.yml文件中的elasticsearch属性。 Open an issue为了它?

答案 2 :(得分:2)

ElasticSearch没有这样的永久设置,我不想要这样。我经常看到开发人员忘记在生产中撤消这些设置,然后整体产品性能下降。类似的例子是启用DEBUG日志记录,这是非常受欢迎的性能杀手。

您有很多工具可以简化您的开发:

  • RestClient‎ Firefox插件
  • [ElasticSearch Head] - 优秀的ES管理员,甚至可以很好地格式化您的输入

加上前面提到的ElasticShell。

但是,如果你真的想在curl中做到这一点,这就是我刚才做的简单技巧。在bash shell或脚本中运行:

curl() { `which curl` $@ | python -mjson.tool ; } 

你像以前一样使用curl:

curl http://localhost:9200/

撤消:

unset -f curl

当然,如果您不喜欢上面的函数,最好将该函数命名为ppcurl:)