python:elasticsearch-dsl:更新主体未完全转移

时间:2017-07-04 12:08:03

标签: python search elasticsearch indexing updates

'我通过p​​ython模块 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'}]

正文包含相应的信息,但并非所有信息都被转移。我按预期检查了,搜索只返回一个文档。没有错误消息。重复的行为相同(完全相同的作者)。

1 个答案:

答案 0 :(得分:0)

好的,我只需要在refresh=True查询中添加update()