How to add mapping via go-elasticsearch package

Issue

Basically when I am trying to insert a new document to non-existing index, it is automatically sets to dynamic mapping.
But I have issues where in sometimes I want to change the data type of the fields on the ES.

I want to set it via my go-lang service but looks like go-elasticsearch package doesn’t support it? correct me if I am wrong

Solution

You can create an index along with its mapping using go-elasticsearch/esapi go-elasticsearch/esapi

Create a request as below:

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
}

by this way you can create a new index with specific mapping

Answered By – rqb

Answer Checked By – Marie Seifert (GoLangFix Admin)

Leave a Reply

Your email address will not be published.