一、go-elasticsearch的概述
go-elasticsearch是一个用于构建Elasticsearch客户端的Golang库。它通过Elasticsearch REST API与Elasticsearch集群进行通信,支持大部分的Elasticsearch功能,并提供了额外的功能以便更容易地使用Elasticsearch集群。
在使用go-elasticsearch之前,需要先安装Elasticsearch。安装完毕之后,就可以使用go-elasticsearch与Elasticsearch进行通信。下面介绍go-elasticsearch的一些常用方法。
二、go-elasticsearch的常用方法
1、Create Index方法
该方法用于创建一个索引。
func createIndex(es *elasticsearch.Client, indexName string) (*esapi.Response, error) { req := esapi.IndicesCreateRequest{ Index: indexName, } res, err := req.Do(context.Background(), es) if err != nil { return nil, err } return res, nil }
将上述代码保存为create_index.go文件,然后使用go run create_index.go命令便可以创建一个名为"test_index"的索引。
2、Delete Index方法
该方法用于删除一个索引。
func deleteIndex(es *elasticsearch.Client, indexName string) (*esapi.Response, error) { req := esapi.IndicesDeleteRequest{ Index: []string{indexName}, } res, err := req.Do(context.Background(), es) if err != nil { return nil, err } return res, nil }
将上述代码保存为delete_index.go文件,然后使用go run delete_index.go命令便可以删除名为"test_index"的索引。
3、Index Document方法
该方法用于将一个文档加入到指定的索引和类型中。
func indexDocument(es *elasticsearch.Client, indexName string, docID string, docBody map[string]interface{}) (*esapi.Response, error) { req := esapi.IndexRequest{ Index: indexName, DocumentID: docID, Body: esutil.ToJSONReader(docBody), Refresh: "true", } res, err := req.Do(context.Background(), es) if err != nil { return nil, err } return res, nil }
将上述代码保存为index_document.go文件,然后使用go run index_document.go命令便可以将一个文档加入到名为"test_index"的索引和类型中。
4、Get Document方法
该方法用于获取一个文档。
func getDocument(es *elasticsearch.Client, indexName string, docID string) (*esapi.Response, error) { req := esapi.GetRequest{ Index: indexName, DocumentID: docID, } res, err := req.Do(context.Background(), es) if err != nil { return nil, err } return res, nil }
将上述代码保存为get_document.go文件,然后使用go run get_document.go命令便可以获取一个名为"test_doc"的文档。
三、go-elasticsearch的Template方法
1、Create Index Template方法
该方法用于创建一个索引模板。
func createIndexTemplate(es *elasticsearch.Client, templateName string, body map[string]interface{}) (*esapi.Response, error) { req := esapi.IndicesPutTemplateRequest{ Name: templateName, Body: esutil.ToJSONReader(body), } res, err := req.Do(context.Background(), es) if err != nil { return nil, err } return res, nil }
将上述代码保存为create_index_template.go文件,然后使用go run create_index_template.go命令便可以创建一个名称为"my_index_template"的索引模板。
2、Delete Index Template方法
该方法用于删除一个索引模板。
func deleteIndexTemplate(es *elasticsearch.Client, templateName string) (*esapi.Response, error) { req := esapi.IndicesDeleteTemplateRequest{ Name: []string{templateName}, } res, err := req.Do(context.Background(), es) if err != nil { return nil, err } return res, nil }
将上述代码保存为delete_index_template.go文件,然后使用go run delete_index_template.go命令便可以删除名称为"my_index_template"的索引模板。
3、Get Index Template方法
该方法用于获取一个索引模板。
func getIndexTemplate(es *elasticsearch.Client, templateName string) (*esapi.Response, error) { req := esapi.IndicesGetTemplateRequest{ Name: []string{templateName}, } res, err := req.Do(context.Background(), es) if err != nil { return nil, err } return res, nil }
将上述代码保存为get_index_template.go文件,然后使用go run get_index_template.go命令便可以获取名称为"my_index_template"的索引模板。