2017-07-04 8 views
0

'私はpythonモジュールelasticsearch-dslでelasticsearchにアクセスしています。python:elasticsearch-dsl:更新本体が完全に転送されていません

は、私はインデックスにいくつかの情報を転送するために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

質問:update()クエリにrefresh=Trueを追加するだけでした。

関連する問題