golang 数据上传到ElasticSearch
要将数据上传到Elasticsearch,您可以使用Elasticsearch官方提供的Go客户端库,称为“Elasticsearch Golang”。
以下是一个简单的示例,演示如何使用此库将数据上传到Elasticsearch:
package main
import (
"context"
"encoding/json"
"fmt"
"log"
"os"
"time"
"github.com/elastic/go-elasticsearch/v7"
"github.com/elastic/go-elasticsearch/v7/esapi"
)
type Log struct {
Timestamp time.Time `json:"@timestamp"`
Level string `json:"level"`
Message string `json:"message"`
}
func main() {
esConfig := elasticsearch.Config{
Addresses: []string{"http://localhost:9200"},
}
esClient, err := elasticsearch.NewClient(esConfig)
if err != nil {
log.Fatalf("Error creating the Elasticsearch client: %s", err)
}
logData := Log{
Timestamp: time.Now(),
Level: "INFO",
Message: "Hello, Elasticsearch!",
}
logJSON, err := json.Marshal(logData)
if err != nil {
log.Fatalf("Error marshaling the log data: %s", err)
}
indexName := "mylogs"
req := esapi.IndexRequest{
Index: indexName,
DocumentID: "",
Body: bytes.NewReader(logJSON),
}
res, err := req.Do(context.Background(), esClient)
if err != nil {
log.Fatalf("Error uploading the log data to Elasticsearch: %s", err)
}
defer res.Body.Close()
if res.IsError() {
log.Fatalf("Error uploading the log data to Elasticsearch: %s", res.Status())
}
fmt.Printf("Log data uploaded to Elasticsearch: %s\n", indexName)
}
这个例子创建了一个名为“mylogs”的索引,并将包含一些日志数据的文档上传到该索引中。要上传不同类型的数据,请相应地调整数据结构和索引名称。
请注意,此示例仅涵盖了基本用例。如果要使用Elasticsearch的高级功能(例如聚合、搜索等),则需要更复杂的查询。有关更高级的用法,请参阅Elasticsearch Golang库的文档。
原文地址: https://www.cveoy.top/t/topic/vst 著作权归作者所有。请勿转载和采集!