使用弹性搜索 py 进行无类型批量更新
Bulk updating without type using elastic search 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
每个索引在 Elasticsearch 6.x+
中有一种映射类型。在 Elasticsearch 7.x+
中,类型被删除。在版本 2.x - 5.6
中,您可以使用多个映射。假设您使用的版本 6.x
,您需要在索引中包含文档类型。
我正在尝试使用弹性搜索 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
每个索引在 Elasticsearch 6.x+
中有一种映射类型。在 Elasticsearch 7.x+
中,类型被删除。在版本 2.x - 5.6
中,您可以使用多个映射。假设您使用的版本 6.x
,您需要在索引中包含文档类型。