Home Articles

无法在Elasticsearch中为数组编制索引

Asked
Viewed 647 times
2

我有一个Elasticsearch索引,其中包含“metadata”元素的以下映射:

metadata: {
  dynamic: true
  properties: {
    id: {
      type: string
    }
    data: {
      dynamic: true
      properties: {
        ...
      }
    }
  }
}

我通过执行以下NEST调用来创建索引条目:

var response = elasticClient.Index(item, x =>
        x.Index("testIndex").Type("clip").Id(itemId));

其中“item”是XElement的一个实例 .

只要“item”只有一个节点“元数据”,一切正常,但如果有几个“元数据”节点,我会收到以下错误:

“[clip_full]的对象映射与[metadata]的数组试图解析为数组,但得到了EOF,同一字段的类型是否存在不匹配?”

这很奇怪,因为AFAIK阵列不需要任何映射预防措施:任何映射元素都可以在多个实例中发送 . 如果我预处理“item”XElement并删除除一个“元数据”节点以外的所有节点,则索引工作正常 .

1 Answer

  • 0

    我有同样的问题,它似乎与您如何创建数据有关 . 我正在搜索更多关于它的信息,但似乎预先解析的对象会在对象本身中转换单个对象数组,从而破坏您的对象模式 .

    编辑:像往常一样,问题来自使用该工具的人 . 我的json生成错了,在两个文档之间的数组中插入不同的类型 . 即在数组中创建了一些字符串而不是对象 .

Related