将文档添加到索引而不进行映射

时间:2019-08-29 21:13:55

标签: elasticsearch nest

我目前在Elasticsearch 5.5中有一个索引,其中有几种不同的文档类型。其中一个文档是一个复杂的POCO对象,我正在使用动态映射(未预先设置映射)将其索引到Elasticsearch。同一索引中的其他文档类型确实具有映射。我需要在索引中添加“需要路由”标志,这对于刚刚使用映射的文档来说很好:

$contents = Storage::disk('sftp')->get('my_remote_filename');

我是否仍然需要将RoutingField必需的设置添加到动态映射的文档中?我宁愿不必为此文档设置所有映射,子元素等,因为如上所述,它是一个复杂的对象。

1 个答案:

答案 0 :(得分:0)

有关将特定字段添加到类型映射的示例,请参见index mapping api中的第三个示例。

每个不同的文档类型都有自己的映射,并且(据我所知,一段时间内未使用5.x)该映射将在映射中动态添加新字段。除非您将其关闭,否则此行为保持不变。使用映射API时,您基本上会在exisintg映射(由ES动态创建的映射)中添加一些专有属性,因此我相信您可以简单地使用该api,将字段添加到数据中,而无需再次声明整个过程或添加新的麻烦将来会动态地添加到它。

实际上,您可以直接将字段添加到数据中,而完全不必关心映射。

另一方面,您可以使用GET on the index mapping获得当前类型的映射。这是当前动态映射的格式正确的映射(因此,如果您最终想要添加一个字段并将其设为静态或其他内容,则无需自己重写所有内容;如果需要,还可以对其进行备份您正在玩地图)。