Answers:
有关集群中所有索引的简要列表,请致电
curl http://localhost:9200/_aliases
这将为您提供索引及其别名的列表。
如果要打印精美,请添加pretty=true
:
curl http://localhost:9200/_aliases?pretty=true
如果调用索引old_deuteronomy
和,结果将类似于以下内容mungojerrie
:
{
"old_deuteronomy" : {
"aliases" : { }
},
"mungojerrie" : {
"aliases" : {
"rumpleteazer" : { },
"that_horrible_cat" : { }
}
}
}
curl -s localhost:9200/_aliases?pretty=true | awk -F\" '!/aliases/ && $2 != "" {print $2}'
/stats
端点,要么使用参数运行状况端点_cluster/health?level=indices
尝试
curl 'localhost:9200/_cat/indices?v'
它会以表格形式为您提供以下自我说明的输出
health index pri rep docs.count docs.deleted store.size pri.store.size
yellow customer 5 1 0 0 495b 495b
您可以查询localhost:9200/_status
,这将为您提供索引列表以及有关每个索引的信息。响应如下所示:
{
"ok" : true,
"_shards" : { ... },
"indices" : {
"my_index" : { ... },
"another_index" : { ... }
}
}
GET /_stats/indexes
/_stats/indices
因为它是正确的复数形式,也是in /_status
和in中使用的键/_stats
。
_nodes/stats
和_nodes/status
@KimberlyW
_stats命令提供了通过指定所需指标来自定义结果的方法。要获取索引,查询如下:
GET /_stats/indices
_stats
查询的一般格式为:
/_stats
/_stats/{metric}
/_stats/{metric}/{indexMetric}
/{index}/_stats
/{index}/_stats/{metric}
指标在哪里:
indices, docs, store, indexing, search, get, merge,
refresh, flush, warmer, filter_cache, id_cache,
percolate, segments, fielddata, completion
作为对自己的锻炼,我编写了一个很小的elasticsearch插件,提供了无需任何其他信息即可列出elasticsearch索引的功能。您可以在以下网址找到它:
http://blog.iterativ.ch/2014/04/11/listindices-writing-your-first-elasticsearch-java-plugin/
"type": "illegal_argument_exception", "reason": "request [/_stats/indices] contains unrecognized metric: [indices]"
我用它来获取所有索引:
$ curl --silent 'http://127.0.0.1:9200/_cat/indices' | cut -d\ -f3
有了这个清单,您可以从事...
$ curl -s 'http://localhost:9200/_cat/indices' | head -5
green open qa-abcdefq_1458925279526 1 6 0 0 1008b 144b
green open qa-test_learnq_1460483735129 1 6 0 0 1008b 144b
green open qa-testimportd_1458925361399 1 6 0 0 1008b 144b
green open qa-test123p_reports 1 6 3868280 25605 5.9gb 870.5mb
green open qa-dan050216p_1462220967543 1 6 0 0 1008b 144b
要获取上面的第三列(索引名称):
$ curl -s 'http://localhost:9200/_cat/indices' | head -5 | cut -d\ -f3
qa-abcdefq_1458925279526
qa-test_learnq_1460483735129
qa-testimportd_1458925361399
qa-test123p_reports
qa-dan050216p_1462220967543
注意:您也可以使用awk '{print $3}'
代替cut -d\ -f3
。
您也可以在查询后缀?v
以添加列标题。这样做会破坏cut...
方法,因此我建议此时使用awk..
选择。
$ curl -s 'http://localhost:9200/_cat/indices?v' | head -5
health status index pri rep docs.count docs.deleted store.size pri.store.size
green open qa-abcdefq_1458925279526 1 6 0 0 1008b 144b
green open qa-test_learnq_1460483735129 1 6 0 0 1008b 144b
green open qa-testimportd_1458925361399 1 6 0 0 1008b 144b
green open qa-test123p_reports 1 6 3868280 25605 5.9gb 870.5mb
curl -s 'http://localhost:9200/_cat/indices?h=index'
将只打印索引名称。无需使用shell技巧即可过滤列。
tr -s ' '
before cut
来压缩空格),否则,如果状态为red
因为它将用空格填充cut
并将每个单独的空格视为定界符,则不会获得索引名称一个新字段,即使该“字段”最终为空
curl -XGET 'http://localhost:9200/_cluster/health?level=indices'
这将输出如下
{
"cluster_name": "XXXXXX:name",
"status": "green",
"timed_out": false,
"number_of_nodes": 3,
"number_of_data_nodes": 3,
"active_primary_shards": 199,
"active_shards": 398,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 0,
"delayed_unassigned_shards": 0,
"number_of_pending_tasks": 0,
"number_of_in_flight_fetch": 0,
"task_max_waiting_in_queue_millis": 0,
"active_shards_percent_as_number": 100,
"indices": {
"logstash-2017.06.19": {
"status": "green",
"number_of_shards": 3,
"number_of_replicas": 1,
"active_primary_shards": 3,
"active_shards": 6,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 0
},
"logstash-2017.06.18": {
"status": "green",
"number_of_shards": 3,
"number_of_replicas": 1,
"active_primary_shards": 3,
"active_shards": 6,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 0
}}
You may use this command line.
curl -X GET“ localhost:9200 / _cat / indices?v”
有关更多信息(Elasticsearch官方网站)
这里的人们已经回答了如何在卷曲和意义上做到这一点,有些人可能需要用Java做到这一点。
来了
client.admin().indices().stats(new IndicesStatsRequest()).actionGet().getIndices().keySet()
试试这个cat API:它将为您提供所有索引的列表以及健康状况和其他详细信息。
CURL -XGET http:// localhost:9200 / _cat / indices
您也可以使用
curl -X GET "localhost:9200/<INDEX_NAME>"
e.g. curl -X GET "localhost:9200/twitter"
You may get output like:
{
"twitter": {
"aliases": {
},
"mappings": {
},
"settings": {
"index": {
"creation_date": "1540797250479",
"number_of_shards": "3",
"number_of_replicas": "2",
"uuid": "CHYecky8Q-ijsoJbpXP95w",
"version": {
"created": "6040299"
},
"provided_name": "twitter"
}
}
}
}
欲了解更多信息
https://www.elastic.co/guide/zh-CN/elasticsearch/reference/current/indices-get-index.html
列出索引+与list:一起显示其状态的最佳方法之一就是简单地执行以下查询。
注意:最好使用Sense获得正确的输出。
curl -XGET 'http://localhost:9200/_cat/shards'
示例输出如下。主要优点是,它基本上可以显示索引名称及其保存到的分片,索引大小和分片ip等
index1 0 p STARTED 173650 457.1mb 192.168.0.1 ip-192.168.0.1
index1 0 r UNASSIGNED
index2 1 p STARTED 173435 456.6mb 192.168.0.1 ip-192.168.0.1
index2 1 r UNASSIGNED
...
...
...
我使用_stats/indexes
端点获取数据的json blob,然后使用jq进行过滤。
curl 'localhost:9200/_stats/indexes' | jq '.indices | keys | .[]'
"admin"
"blazeds"
"cgi-bin"
"contacts_v1"
"flex2gateway"
"formmail"
"formmail.pl"
"gw"
...
如果不需要引号,请-r
在jq中添加一个标志。
是的,端点是indexes
,数据键是indices
,所以他们也无法下定决心:)
我需要这样做来清理内部安全扫描(nessus)创建的这些垃圾索引。
PS。如果您要从命令行与ES进行交互,我强烈建议您熟悉jq。
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>2.4.0</version>
</dependency>
Java API
Settings settings = Settings.settingsBuilder().put("cluster.name", Consts.ES_CLUSTER_NAME).build();
TransportClient client = TransportClient.builder().settings(settings).build().addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("52.43.207.11"), 9300));
IndicesAdminClient indicesAdminClient = client.admin().indices();
GetIndexResponse getIndexResponse = indicesAdminClient.getIndex(new GetIndexRequest()).get();
for (String index : getIndexResponse.getIndices()) {
logger.info("[index:" + index + "]");
}
如果您在Scala中工作Future
,则可以使用创建方法来创建RequestExecutor,然后使用IndicesStatsRequestBuilder和管理客户端来提交请求。
import org.elasticsearch.action.{ ActionRequestBuilder, ActionListener, ActionResponse }
import scala.concurrent.{ Future, Promise, blocking }
/** Convenice wrapper for creating RequestExecutors */
object RequestExecutor {
def apply[T <: ActionResponse](): RequestExecutor[T] = {
new RequestExecutor[T]
}
}
/** Wrapper to convert an ActionResponse into a scala Future
*
* @see http://chris-zen.github.io/software/2015/05/10/elasticsearch-with-scala-and-akka.html
*/
class RequestExecutor[T <: ActionResponse] extends ActionListener[T] {
private val promise = Promise[T]()
def onResponse(response: T) {
promise.success(response)
}
def onFailure(e: Throwable) {
promise.failure(e)
}
def execute[RB <: ActionRequestBuilder[_, T, _, _]](request: RB): Future[T] = {
blocking {
request.execute(this)
promise.future
}
}
}
如果您尝试以编程方式而不是通过curl查询ES,那么从本博客文章中删除执行程序绝对是一个不错的选择。有了这个,您可以像这样轻松地创建所有索引的列表:
def totalCountsByIndexName(): Future[List[(String, Long)]] = {
import scala.collection.JavaConverters._
val statsRequestBuider = new IndicesStatsRequestBuilder(client.admin().indices())
val futureStatResponse = RequestExecutor[IndicesStatsResponse].execute(statsRequestBuider)
futureStatResponse.map { indicesStatsResponse =>
indicesStatsResponse.getIndices().asScala.map {
case (k, indexStats) => {
val indexName = indexStats.getIndex()
val totalCount = indexStats.getTotal().getDocs().getCount()
(indexName, totalCount)
}
}.toList
}
}
client
是Client的一个实例,可以是一个节点或一个传输客户端,以适合您的需求为准。您还需要ExecutionContext
对此请求的范围进行隐式处理。如果您尝试在没有此代码的情况下编译此代码,那么您将收到来自scala编译器的警告,提示如果尚未导入该代码,则如何获取。
我需要文档计数,但是如果您真的只需要索引的名称,则可以从地图的键而不是从索引中将它们拉出IndexStats
:
indicesStatsResponse.getIndices().keySet()
即使您正在尝试以编程方式执行此操作,当您搜索如何执行此操作时也会出现此问题,因此我希望这对希望在scala / java中执行此操作的人有所帮助。否则,curl用户可以按照最佳答案的说明进行操作并使用
curl http://localhost:9200/_aliases
你可以试试这个命令
curl -X GET http:// localhost:9200 / _cat / indices?v
如果您的系统上安装了curl,请尝试以下简单命令: curl -XGET xx.xx.xx.xx:9200 / _cat / indices?v
curl http://localhost:9200/_stats/indexes\?pretty\=1