如何通过 go-elasticsearch 包添加映射

How to add mapping via go-elasticsearch package

基本上,当我尝试将新文档插入到不存在的索引时,它会自动设置为动态映射。 但是我有一些问题,有时我想更改 ES 上字段的数据类型。

我想通过我的 go-lang 服务设置它,但看起来 go-elasticsearch 包不支持它?如果我错了请纠正我

您可以使用 go-elasticsearch/esapi go-elasticsearch/esapi

创建索引及其映射

创建如下请求:

mapping := `{
    "settings": {
        "number_of_shards": 1,
        "number_of_replicas": 1
      },
      "mappings": {
        "properties": {
          "name": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
          "message": {
            "type": "text",
            "fields": {
              "keyword": {
                "type": "keyword",
                "ignore_above": 256
              }
            }
          },
        }
}`

// Index - pass index name
// Body - pass mapping, settings etc
indexReq := esapi.IndicesCreateRequest{
    Index: "my-index",
    Body: strings.NewReader(string(mapping)),
}

resp, err := indexReq.Do(ctx, elasticclient)
if err != nil {
    // handle error
}

通过这种方式,您可以创建具有特定映射的新索引