我已经实现了批量索引。我想提高效率。
# current implementation in Python
def products_to_index():
for product in all_products():
yield {
"_op_type": "index",
"_index": INDEX_NAME,
"_id": product.id,
"_source": {"name": product.name, "content": product.content},
}
def main(args):
# Connect to localhost:9200 by default.
es = Elasticsearch()
body = ANALYZER
es.indices.create(index=INDEX_NAME, body=body)
bulk(es, products_to_index())
这个实现似乎只是获取所有的数据,并对它们逐批进行索引。我想实施一个额外的步骤来检查这个条目是否已经被索引。
我还考虑过从本地保存的索引路径加载。不知道如何进行。
我看了api文档,但找不到。
1条答案
按热度按时间xuo3flqw1#
通过使用
index
你告诉elasticsearch我想索引这个文档,如果它存在,就更新它。但如果你用create
键入特定的id,您可以使用elasticsearch以“如果不存在则放置”的方式进行搜索。当您使用bulkapi时,您的响应将分别显示每个文档的结果,并且您可以知道插入了哪个文档以及没有插入哪个文档。为此,只需设置op_type
作为create
.