'我通过python模块 elasticsearch-dsl 访问elasticsearch。
我有一个正在传递给update()
函数的正文,以便将一些信息传递给索引:
>>> hits = client.search(index='xyz', body=body_search)
>>> print hits['hits']['hits'][0]['_source']['authors']
>>> [{u'id': u'None', u'name': u'Xyz'}, {u'id': u'None', u'name': u'Zyx'}, {u'id': None, u'name': u'Yzx'}]
>>> body_update = { "doc": { "authors": None } }
>>> body_update['doc']['authors'] = new_authors
>>> print body_update
>>> {'doc': {'authors': [{u'id': u'XYZ_0', u'name': u'Xyz'}, {u'id': u'ZYX_0', u'name': u'Zyx'}, {u'id': 'YZX_0', u'name': u'Yzx'}]}}
>>> client.update(index='xyz', doc_type='zyx', id=123, body=body_update)
>>> print client.search(index='xyz', body=body_search)['hits']['hits'][0]['_source']['authors']
>>> [{u'id': u'XYZ_0', u'name': u'Xyz'}, {u'id': u'ZYX_0', u'name': u'Zyx'}, {u'id': None, u'name': u'Yzx'}]
正文包含相应的信息,但并非所有信息都被转移。我按预期检查了,搜索只返回一个文档。没有错误消息。重复的行为相同(完全相同的作者)。
答案 0 :(得分:0)
好的,我只需要在refresh=True
查询中添加update()
。