Elasticsearch动态映射将all转换为字符串(使用Javascript客户端)

时间:2015-10-16 15:32:08

标签: dynamic elasticsearch mapping customizing

我遇到的情况是,我需要导入一堆可能最终存在冲突数据类型的不同数据。我决定将所有内容转换为字符串,然后如果需要数据则转换回来。我无法弄清楚如何使用javascript客户端进行Elasticsearches(ES)动态映射。

ES在他们的文档中说了什么:

{
    "mappings": {
        "my_type": {
            "dynamic_templates": [
                { "es": {
                      "match":              "*_es", 
                      "match_mapping_type": "string",
                      "mapping": {
                          "type":           "string",
                          "analyzer":       "spanish"
                      }
                }},
                { "en": {
                      "match":              "*", 
                      "match_mapping_type": "string",
                      "mapping": {
                          "type":           "string",
                          "analyzer":       "english"
                      }
                }}
            ]
}}}

在他们的文档中说“匹配字符串字段,其名称以_es结尾” “匹配所有其他字符串字段”:https://www.elastic.co/guide/en/elasticsearch/guide/current/custom-dynamic-mapping.html

这是我尝试过的,但不会将所有内容转换为字符串(也尝试不使用通配符引号):

event.mappings = {
        "mytype": {
            "match": "*",
            "mapping": {
                "type": "string"
            }
        }
    }

我也试过"match_mapping_type" : "*"

我试过了:esClient.indices.putMapping({index:"myindex", type:"mytype", body:mybody}) 在响应和.create函数之外。 有什么提示吗?

1 个答案:

答案 0 :(得分:0)

您的映射应该如下所示

PUT /test
{
  "mappings": {
    "test": {
      "dynamic_templates": [
        {
          "en": {
            "match": "*",
            "mapping": {
              "type": "string"
            }
          }
        }
      ]
    }
  }
}

测试数据:

POST /test/test/1
{
  "nr": 1,
  "jsonDate":"2015-06-08T03:41:12-05:00",
  "bool": true
}

结果映射,如ES所示:

{
   "test": {
      "mappings": {
         "test": {
            "dynamic_templates": [
               {
                  "en": {
                     "mapping": {
                        "type": "string"
                     },
                     "match": "*"
                  }
               }
            ],
            "properties": {
               "bool": {
                  "type": "string"
               },
               "jsonDate": {
                  "type": "string"
               },
               "nr": {
                  "type": "string"
               }
            }
         }
      }
   }
}