我们说我有这个数据:
{
"field1": {
"foo":"bar"
}
}
我想映射" field1"作为Any对象,如果可能的话。我不需要将其编入索引,如果这样可以更容易。我不知道field1的结构是什么,可以改变。所以我应该能够将我的类型更新为:
{
"field1": {
"foo": 123
}
}
这可能吗?现在,似乎我必须知道" field1"中字段的映射。对象并且不能偏离它(除了在里面添加新字段)。
答案 0 :(得分:0)
你可以告诉ES您的字段映射是什么,但不需要。告诉ES您的字段有助于确保一致性。
话虽这么说,如果你刚开始向ES发送一个新字段,它会接受它并自动为它创建一个映射。
在您的示例中,当ES看到值为“bar”的新字段“foo”时,它将自动创建“foo”到“string”类型的映射。
下次使用值123发送“foo”时,ES仍会接受该字段,但会将其存储为字符串。
好消息:ES会自动允许您这样做
坏消息:你不能在该字段上运行“Range”查询(SQL Equivilent将是:WHERE FOO > 200
)