如何将字段映射为elasticsearch中的通用对象? (不需要编入索引)

时间:2015-12-09 22:08:03

标签: elasticsearch

我们说我有这个数据:

{
  "field1": {
    "foo":"bar"
  }
}

我想映射" field1"作为Any对象,如果可能的话。我不需要将其编入索引,如果这样可以更容易。我不知道field1的结构是什么,可以改变。所以我应该能够将我的类型更新为:

{
    "field1": {
        "foo": 123
    }
}

这可能吗?现在,似乎我必须知道" field1"中字段的映射。对象并且不能偏离它(除了在里面添加新字段)。

1 个答案:

答案 0 :(得分:0)

可以告诉ES您的字段映射是什么,但不需要。告诉ES您的字段有助于确保一致性。

话虽这么说,如果你刚开始向ES发送一个新字段,它会接受它并自动为它创建一个映射。

在您的示例中,当ES看到值为“bar”的新字段“foo”时,它将自动创建“foo”到“string”类型的映射。

下次使用值123发送“foo”时,ES仍会接受该字段,但会将其存储为字符串。

好消息:ES会自动允许您这样做 坏消息:你不能在该字段上运行“Range”查询(SQL Equivilent将是:WHERE FOO > 200