当前位置:  开发笔记 > 编程语言 > 正文

如何查询和列出elasticsearch索引中的所有类型?

如何解决《如何查询和列出elasticsearch索引中的所有类型?》经验,为你挑选了1个好方法。

问题: 在elasticsearch中查询并列出特定索引(和所有索引)中所有类型的最正确方法是什么?

我一直在阅读参考和API,但似乎找不到任何明显的东西.

我可以用命令列出索引:

$ curl 'localhost:9200/_cat/indices?v'

我可以使用以下命令获取统计信息(似乎不包括类型):

$ curl localhost:9200/_stats

我希望有一个简单明了的命令:

$ curl localhost:9200/_types

要么

$ curl localhost:9200/index_name/_types

谢谢你尽你所能的帮助.



1> Val..:

你所谓的"类型"实际上是一种"映射类型",获取它们的方法只需使用:

curl -XGET localhost:9200/_all/_mapping

既然你只想要映射类型的名称,你不需要安装任何东西,因为你可以使用Python只是为了从你之前的响应中得到你想要的东西:

curl -XGET localhost:9205/_all/_mapping | python -c 'import json,sys; indices=json.load(sys.stdin); indices = [type for index in indices for type in indices.get(index).get("mappings")]; print list(indices);'

Python脚本做了一些非常简单的事情,即迭代所有索引和映射类型,并只检索后者的名称:

import json,sys; 
resp = json.load(sys.stdin); 
indices = [type for index in resp for type in indices.get(index).get("mappings")]; 
print list(indices);'

UPDATE

由于您使用的是Ruby,因此使用Ruby代码可以获得相同的技巧:

curl -XGET localhost:9205/_all/_mapping | ruby -e "require 'rubygems'; require 'json'; resp = JSON.parse(STDIN.read); resp.each { |index, indexSpec | indexSpec['mappings'].each {|type, fields| puts type} }"

Ruby脚本如下所示:

require 'rubygems';
require 'json';
resp = JSON.parse(STDIN.read);
resp.each { |index, indexSpec | 
    indexSpec['mappings'].each { |type, fields| 
        puts type
    }
}

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有