0

一部のデータのインデックス作成に ElasticSearch を使用しています。しかし、パフォーマンスはそれほど効率的ではないことがわかりました。

3000 エントリのデータしかなく、各データには 6 つの列があります。これらの 3000 エントリのインデックス作成には 5 分かかります。

私は ElasticSearch を初めて使用するため、私のコードとプログラム フローは次のような基本的なものです。

  1. 検索して、同じデータがあるかどうかを確認します。
  2. 同じデータがある場合は、更新します。
  3. そうでない場合は、追加します。

コードは次のとおりです。

conn = pyes.ES('server:9200')

探す:

searchResult = conn.search(searchDict, indexName, TypeName)

索引

conn.index(storeDict, indexName, TypeName, id)

インデックス データのカウントを更新します。

 conn.partial_update(indexName, TypeName, id, "ctx._source.Count += counter", params={"counter" : 1})

コードのパフォーマンスを向上させる方法はありますか?

ご協力ありがとうございました。

4

2 に答える 2

1

更新する前に検索する必要はありません。更新に関する es ドキュメントを読み、セクションまでスクロールしupsertます。ドキュメントがサーバーに存在しない場合upsertに使用するドキュメントを保持するパラメータです。それ以外の場合は無視され、通常のリクエストのように機能します(現在行っているように)。upsertupdate

幸運を!

于 2013-07-25T06:35:47.113 に答える