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!