提问者:小点点

将非结构化数据放入Elasticsearch


我有一个带有MongoDB的Nodejs应用程序。现在我想使用Elasticsearch将数据从mongo复制到Elasticsearch。我正在使用npm软件包“ElasticSearch”。例如,对于收藏“帖子”,我有这样的:

items: [
  {
    _id: '111111111111',
    title: 'test1',
    status: true,
  },
  {
    _id: '22222222',
    title: 'test2',
    status: 0,
  },
  {
    _id: '333333333',
    title: 'test1',
    status: {published: trye},
  }
]

正如您所看到的,我的数据是非结构化的,并且Elasticsearch在我添加这些项时显示了错误。我想要一个把戏关闭弹性搜索限制,允许我添加这些数据。我不能改变我的数据它是巨大的。有解决办法吗?


共1个答案

匿名用户

它会给您带来错误,因为status字段首先是一个布尔值,其次是一个数字,最后是一个对象->映射冲突。如果您不想更改数据,我假设您不希望搜索显示冲突的字段(您如何能够一致地查询一个可能是任何内容的字段?)。那么,我的最佳建议是存储冲突字段,而不对其进行索引。这意味着您将在文档中看到它们,但您将无法查询它们或聚合它们。若要禁用索引,请将它们的映射类型设置为object,并将enabled映射属性设置为false(请参阅文档)。

如果您希望能够查询或聚合所有内容,则必须进行一致的预处理数据的额外工作。