关于 elasticsearch:修改 Elastic Search 中的 _mapping 显示奇怪的行为

modify the _mapping in Elastic Search shows strange behavior

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

1
2
3
4
5
6
7
8
9
10
11
12
13
   "properties": {
      "AddressNumber": {
         "type":"string"
       },
      "City": {
         "type":"string"
       },
      "CompanyName": {
         "type":"string"
       },
      "ContactName": {
         "type":"string"
       },

但它确实允许我保存 CompanyName 的整数值。同样令人惊奇的是,数据显示为 int.

ES 中的上一个文档

1
2
3
4
             { "CompanyName":"1231",
              "ContactName":"sdfsdf",
              "City":"Schenectady"
             }

将字段类型更改为 int 后上次保存的文档

1
2
3
4
                 {"CompanyName": 1231,
                  "ContactName":"shivang",
                  "City":"Leeds"
                 }

它可以很好地使用字符串和 int 值进行搜索,如果我们尝试在其中保存一些字符串,它会将 CompanyName 显示为 0(这很好)。但是为什么它没有正确显示映射?

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


使用零停机时间更改映射将彻底解释这一点,正如@Rob 在此处和此 SO 问题中所指出的那样。

我强烈建议您阅读有关默认映射、动态映射,尤其是动态模板的内容。我发现这真的可以帮助我保持我的代码与属性或映射代码无关,让我的 poco\\'s poco\\'s!