英文:
How can I get all index name from Elasticsearch by using golang client library?
问题
我正在使用这个Go库https://pkg.go.dev/github.com/elastic/go-elasticsearch/esapi#CatIndicesRequest来从Elasticsearch查询。
我有一些关于查询的示例,但我正在寻找一种从Elasticsearch集群获取所有索引的API方法。但我在他们的文档中找不到可以使用的方法。有人知道获取所有索引的最佳方法吗?就像http API _cat/indices
一样。
英文:
I am using this library in go https://pkg.go.dev/github.com/elastic/go-elasticsearch/esapi#CatIndicesRequest to query from Elasticsearch.
I has some examples on querying but I am looking for a API method to get all index from Elasticsearch cluster. But I can't find one I can use from their doc. Does anyone know what the best way to get all index? like the http api _cat/indices
答案1
得分: 2
这是一个可工作的示例:
package main
import (
"context"
"fmt"
"github.com/elastic/go-elasticsearch/v7"
"github.com/elastic/go-elasticsearch/v7/esapi"
)
func main() {
cfg := elasticsearch.Config{
Addresses: []string{
"http://localhost:9243",
},
Username: "foo",
Password: "bar",
}
es, err := elasticsearch.NewClient(cfg)
if err != nil {
panic(err)
}
res, err := esapi.CatIndicesRequest{Format: "json"}.Do(context.Background(), es)
if err != nil {
return
}
defer res.Body.Close()
fmt.Println(res.String())
}
您可以调整CatIndicesRequest
以适应您的情况的输出格式。
例如,如果您使用CatIndicesRequest{Pretty: true, Human: true}
,它将返回类似以下的内容:
[200 OK] green open .ent-search-actastic-workplace_search_accounts_v16 yvaDvj9RTMOoWqIpKdC_kw 1 1 1 0 12.1kb 6kb
green open .ent-search-workplace-search-content-events-ecs-ilm-logs-production-2022.01.23-000003 1D1BagTFQ6ypoZh2RdoUhQ 1 1 0 0 416b 208b
green open .ent-search-actastic-workplace_search_search_groups_v4-name-unique-constraint b_FRbLWJQfqXXxyTdcU2cQ 1 1 1 0 7kb 3.5kb
green open .ent-search-actastic-crawler_crawl_requests_v4 kaUWb7YlTEeFH-Gcpz50qA 1 1 0 0 416b 208b
green open .ent-search-api-ecs-ilm-logs-production-2022.03.09-000016 EKZZOtqOR_e8pOztXsLU1g 1 1 0 0 416b 208b
英文:
Here's a working example:
package main
import (
"context"
"fmt"
"github.com/elastic/go-elasticsearch/v7"
"github.com/elastic/go-elasticsearch/v7/esapi"
)
func main() {
cfg := elasticsearch.Config{
Addresses: []string{
"http://localhost:9243",
},
Username: "foo",
Password: "bar",
}
es, err := elasticsearch.NewClient(cfg)
if err != nil {
panic(err)
}
res, err := esapi.CatIndicesRequest{Format: "json"}.Do(context.Background(), es)
if err != nil {
return
}
defer res.Body.Close()
fmt.Println(res.String())
}
You can tweak the CatIndicesRequest
to format the output for your case.
For example, if you use CatIndicesRequest{Pretty: true, Human: true}
. It will return something like this:
[200 OK] green open .ent-search-actastic-workplace_search_accounts_v16 yvaDvj9RTMOoWqIpKdC_kw 1 1 1 0 12.1kb 6kb
green open .ent-search-workplace-search-content-events-ecs-ilm-logs-production-2022.01.23-000003 1D1BagTFQ6ypoZh2RdoUhQ 1 1 0 0 416b 208b
green open .ent-search-actastic-workplace_search_search_groups_v4-name-unique-constraint b_FRbLWJQfqXXxyTdcU2cQ 1 1 1 0 7kb 3.5kb
green open .ent-search-actastic-crawler_crawl_requests_v4 kaUWb7YlTEeFH-Gcpz50qA 1 1 0 0 416b 208b
green open .ent-search-api-ecs-ilm-logs-production-2022.03.09-000016 EKZZOtqOR_e8pOztXsLU1g 1 1 0 0 416b 208b
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论