使用弹性搜索py批量更新无类型

时间:2019-06-02 22:01:46

标签: elasticsearch bulkinsert elasticsearch-py

我正在尝试使用弹性搜索py进行批量插入,但是我不想指定类型,但是不允许我为类型的值指定None或“”。我该如何解决?

bulk_data = []

this_merchant_product = {'field1': 'value1'}

op_dict = {
    "index": {
        "_index": "product",
        "_type": None,
        "_id": str(this_merchant_product_id)
    }
}

bulk_data.append(op_dict)
bulk_data.append(this_merchant_product)

es = Elasticsearch()
res = es.bulk(index='product', body=bulk_data)

我也尝试将_type设置为“”,但这也不起作用。

这些是错误消息。

当我将_type设置为None时,这是错误:

elasticsearch.exceptions.RequestError: RequestError(400, 'action_request_validation_exception', 'Validation Failed: 1: type is missing;

这是将_type设置为“”时遇到的错误:

java.lang.IllegalArgumentException: name cannot be empty string

1 个答案:

答案 0 :(得分:1)

每个索引在Elasticsearch 6.x+中具有一种映射类型。在Elasticsearch 7.x+中,类型被删除。在版本2.x - 5.6中,您可以使用一个以上的映射。假设您使用的是6.x版,则需要在索引中添加文档类型。