0

Elasticsearch -pyを使用して、Django モデルで表される何百万ものレコードを PostgreSQL から Elasticsearch に移動しました。doctype にはモデルの名前を使用しました (CamelCase にありました)。

その後、 Elasticsearch DSLに切り替えたところ、デフォルトではアンダースコア付きの小文字の名前 (snake_case) を持つ Doctype が作成されることに気付きました。

ドキュメント メタで再定義したくないdoc_typeので、Elasticsearch で名前を変更します。これを行う最速の方法は何ですか?

4

1 に答える 1

1

を使用した私自身のソリューションelasticsearch_dsl

from elasticsearch.helpers import bulk
from elasticsearch_dsl import Search
from elasticsearch_dsl.connections import connections


connection = connections.get_connection()    
s = Search(index=index, doc_type=old_name)

actions = (dict(
    _index=hit.meta.index, _type=new_name, 
    _id=hit.meta.id, _source=hit.to_dict()
) for hit in s.scan())
bulk(connection, actions, request_timeout=300)
s.params(request_timeout=600).delete()
于 2017-10-17T12:11:56.637 に答える