【问题标题】:Bulk Update with Elasticsearch in Python在 Python 中使用 Elasticsearch 进行批量更新
【发布时间】:2021-12-24 18:42:37
【问题描述】:

我已成功将我的文档推送到我的 Elasticsearch 并且已经在我的 Kibana 中检查了它。

我当前的代码是这样的:

try:
    res = helpers.bulk(es, my_function(df))
    print("Working")
except Exception as e:
    print(e)

这是“my_function”代码:

def my_function(df):
    for c, line in enumerate(df):
        yield {
            '_index': 'my_index',
            '_type': '_doc',
            '_id': line.get("_id", None),
            '_source': {
                'field_A': line.get('field', "")
            }
        }
    raise StopIteration

然后我想知道如果我将来再次运行 Python 脚本以将一些新文档推送到 Elasticsearch 会怎样。有没有人知道如何做到这一点?

【问题讨论】:

  • 你到底在担心什么?
  • 我认为如果我再次运行此代码,它将推送旧文档和一些新文档,从而导致一些我不想发生的重复文档。

标签: python elasticsearch


【解决方案1】:

只取决于你发送的_id,如果相同,则不会重复,新版本会覆盖旧版本。

所以不用担心,尚不存在的新文档将被编入索引,现有文档的更新将覆盖其旧版本,前提是它们使用相同的_id 发送。

【讨论】:

  • 这个运气好吗?
猜你喜欢
  • 2016-05-12
  • 2016-05-02
  • 2012-12-09
  • 1970-01-01
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多