我有多个并发进程(两个,确切地说)将索引到相同的id。假设首先完成索引操作I0
,然后是索引操作I1
。 I1
之前I0
可能会被编入索引。无论哪个首先编入索引,I1
都应优先于搜索。
答案 0 :(得分:1)
根据http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-index_.html,版本控制可用于此目的。请务必将I0
的版本设置为小于I1
的版本。
答案 1 :(得分:1)
您可以为可以与其version
关联的更新提供可选的version_type
,以保证只使用一个。
补充其文档中发布的示例,您可以手动执行此操作,如:
curl -XPUT 'localhost:9200/twitter/tweet/1?version=1&version_type=external' -d '{
"message" : "elasticsearch now has versioning support, double cool!"
}'
对于version_type
的{{1}},您会得到:
仅在给定版本严格高于的情况下索引文档 存储文档的版本或者如果没有存在 文献。给定的版本将用作新版本并将使用 与新文件一起存储。
可能值得指出的是,内部版本控制从external
开始。