当 _id 等于特定字段时尝试使用 Elasticsearch Bulk API
Attempting to use Elasticsearch Bulk API when _id is equal to a specific field
我正在尝试将文档批量插入到索引中。我需要让 _id 等于我插入的特定字段。我正在使用 ES v6.6
POST productv9/_bulk
{ "index" : { "_index" : "productv9", "_id": "in_stock"}}
{ "description" : "test", "in_stock" : "2001"}
GET productv9/_search
{
"query": {
"match": {
"_id": "2001"
}
}
}
当我 运行 批量声明时 运行 没有任何错误。但是,当我 运行 搜索语句时,它没有得到任何匹配。此外,我还有许多其他文档想以同样的方式插入。
我建议做的是创建一个 ingest pipeline,它将根据 in_stock
字段的值设置文档的 _id
。
首先创建管道:
PUT _ingest/pipeline/set_id
{
"description" : "Sets the id of the document based on a field value",
"processors" : [
{
"set" : {
"field": "_id",
"value": "{{in_stock}}"
}
}
]
}
然后您可以在批量调用中引用管道:
POST productv9/doc/_bulk?pipeline=set_id
{ "index" : {}}
{ "description" : "test", "in_stock" : "2001"}
通过致电 GET productv9/_doc/2001
您将获得您的文件。
我正在尝试将文档批量插入到索引中。我需要让 _id 等于我插入的特定字段。我正在使用 ES v6.6
POST productv9/_bulk
{ "index" : { "_index" : "productv9", "_id": "in_stock"}}
{ "description" : "test", "in_stock" : "2001"}
GET productv9/_search
{
"query": {
"match": {
"_id": "2001"
}
}
}
当我 运行 批量声明时 运行 没有任何错误。但是,当我 运行 搜索语句时,它没有得到任何匹配。此外,我还有许多其他文档想以同样的方式插入。
我建议做的是创建一个 ingest pipeline,它将根据 in_stock
字段的值设置文档的 _id
。
首先创建管道:
PUT _ingest/pipeline/set_id
{
"description" : "Sets the id of the document based on a field value",
"processors" : [
{
"set" : {
"field": "_id",
"value": "{{in_stock}}"
}
}
]
}
然后您可以在批量调用中引用管道:
POST productv9/doc/_bulk?pipeline=set_id
{ "index" : {}}
{ "description" : "test", "in_stock" : "2001"}
通过致电 GET productv9/_doc/2001
您将获得您的文件。