修改弹性搜索中的_mapping显示奇怪的行为

时间:2015-05-13 07:50:01

标签: elasticsearch nest elasticsearch-marvel

我已经在c#(NEST)中将PoCo中的字段类型的字符串类型从字符串修改为int(仅用于测试)。第一件事是它没有反映出类型的映射。它仍在显示字符串

    "properties": {
       "AddressNumber": {
          "type": "string"
       },
       "City": {
          "type": "string"
       },
       "CompanyName": {
          "type": "string"
       },
       "ContactName": {
          "type": "string"
       },

确实允许我保存CompanyName的整数值。奇怪的是,数据显示为int。

ES中的上一份文件

             {  "CompanyName": "1231",
               "ContactName": "sdfsdf",
               "City": "Schenectady"
             }

将字段类型更改为int

后,上次保存的文档
                 { "CompanyName": 1231,
                   "ContactName": "shivang",
                   "City": "Leeds"
                 }

使用string和int值搜索正常,如果我们尝试在其中保存一些字符串,则显示CompanyName为0(很好)。但为什么它没有正确显示映射?

注意:我没有重新创建索引。它是现有的索引

1 个答案:

答案 0 :(得分:1)

Changing Mapping With Zero Downtime将彻底解释这一点,正如@Rob在此处和this SO问题所指出的那样。

我强烈建议您阅读default mappingdynamic mapping,尤其是dynamic templates。我发现这确实有助于我保持代码清除属性或映射代码,让我的poco是poco的!