【发布时间】:2019-11-12 09:40:57
【问题描述】:
所以,我们在 Django 项目中使用了 elasticsearch,并且我们使用的是 elasticsearch-dsl python 库。
我们在生产中遇到以下错误:
ConflictError(409, '{"took":7,"timed_out":false,"total":1,"deleted":0,"batches":1,"version_conflicts":1,"noops":0,"retries":{"bulk":0,"search":0},"throttled_millis":0,"requests_per_second":-1.0,"throttled_until_millis":0,"failures":[{"index":"events","type":"_doc","id":"KJ7SpWsBZnen1jNBRWWM","cause":{"type":"version_conflict_engine_exception","reason":"[KJ7SpWsBZnen1jNBRWWM]: version conflict, required seqNo [1418], primary term [1]. current document has seqNo [1419] and primary term [1]","index_uuid":"2-fSZILVQzuJE8KVmpLFXQ","shard":"0","index":"events"},"status":409}]}')
而且格式更好:
{
"took": 7,
"timed_out": false,
"total": 1,
"deleted": 0,
"batches": 1,
"version_conflicts": 1,
"noops": 0,
"retries": {
"bulk": 0,
"search": 0
},
"throttled_millis": 0,
"requests_per_second": -1.0,
"throttled_until_millis": 0,
"failures": [
{
"index": "events",
"type": "_doc",
"id": "KJ7SpWsBZnen1jNBRWWM",
"cause": {
"type": "version_conflict_engine_exception",
"reason": "[KJ7SpWsBZnen1jNBRWWM]: version conflict, required seqNo [1418], primary term [1]. current document has seqNo [1419] and primary term [1]",
"index_uuid": "2-fSZILVQzuJE8KVmpLFXQ",
"shard": "0",
"index": "events"
},
"status": 409
}
]
}
产生错误的代码是对 dsl delete 方法的调用:
connections.create_connection(
hosts=[settings.ELASTICSEARCH_HOST],
timeout=20,
)
search = EventDocument.search()
# The query is made by the django model's id
search.query('match', id=self.id).delete()
这是EventDocument的定义:
from elasticsearch_dsl import (
Document,
Integer,
)
class EventDocument(Document):
id = Integer()
# other fields
我们现在最大的问题是我们无法访问服务器,我们通过为错误配置的自动电子邮件收到了错误。所以我什至不知道如何重现它。
希望你能帮忙,谢谢。
【问题讨论】:
-
你的回答没有用,这是一个关于与 ES 一起使用的特定库的问题,你只是从我当时已经阅读过的官方文档中复制粘贴的东西,你只是在尝试得到一个容易接受的答案。我不记得我是如何解决这个问题的,但这不是因为那个答案。
标签: python django elasticsearch elasticsearch-dsl elasticsearch-py