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 回答
1
  • 您可以使用elasticsearch 的版本控制功能。如果您要决定您的文档 ID,这很容易。它只是重新索引数据。

  • 您应该使用 BULK API 进行索引。(1000-5000 很好)

  • 性能不佳的另一个原因是关于配置设置config/elasticsearch.yml,您可以使用此提示来提高索引性能。

于 2013-07-25T10:23:59.730 回答