arangodb-river-elasticsearch -- _mapping 不匹配

arangodb-river-elasticsearch -- _mapping mismatch

为组合对象创建河流时,生成的 _mapping 是使用完整的嵌套对象定义而不是字符串字段设置的。这会导致数据导入失败,因为对象引用不是 "dereferenced".

例如

collection1: {name: "test", items: [collection2/123, collection2/124] }
collection1: {somefield: "test"}

在单个索引中为这些集合创建河流后的结果 _mapping 是:

collection1: {name: String, items: { properties: { somefield: String } } }.

导入数据失败,出现以下错误:

org.elasticsearch.index.mapper.MapperParsingException: object mapping [items] trying to serialize a value with no field associated with it, current value [collection1/123]

如何告诉 arango db river 取消对嵌套对象的引用或正确设置映射以使用引用?

河流现已弃用。我为 elasticsearch 创建了一个 mixin,它在我 save/update/delete 对象(通过我的自定义 ODM)时更新索引。

简单地让自己成为数据访问层的包装器,具有高级功能,同时更新 ES 索引。

例如:

class Base(ArangoBase, es.Base):

def save(self):
    ret = ArangoBase.save(self)
    es.Base.save_es(self)
    return ret

def update(self):
    ret = ArangoBase.update(self)
    es.Base.save_es(self)
    return ret

def delete(self):
    ret = ArangoBase.delete(self)
    es.Base.delete_es(self)
    return ret

from elasticsearch import Elasticsearch

class Base(object):
    _es = None
    _es_index = 'chopchop'
    _es_type = None

    def save_es(self):
        self._es.index(index=self._es_index, doc_type=self._es_type, body=self._doc(), id=self.id)

    def delete_es(self):
        self._es.delete(index=self._es_index, doc_type=self._es_type, id=self.id)