字段 [_id] 是元数据字段,不能添加到文档中。使用索引 API 请求参数
Posted
技术标签:
【中文标题】字段 [_id] 是元数据字段,不能添加到文档中。使用索引 API 请求参数【英文标题】:Field [_id] is a metadata field and cannot be added inside a document. Use the index API request parameters 【发布时间】:2019-10-05 21:58:53 【问题描述】:我尝试了批量添加,如图所示是你的自述文件,但我收到了这个错误:
"Field [_id] is a metadata field and cannot be added inside a document. Use the index API request parameters"
我要添加的模型只是一个测试模型,类似于:
"_id" => "57028f25633db3473d0041c8"
数据来自 Mongo 数据库实例
我正在使用 Windown 10、phpstorm、xampp、Laravel 5.5、jenssegers/mongodb、elasticquent/elasticquent 1.0、Elasticsearch 6.0.0,
我的代码:
\App\Product::createIndex($shards = null, $replicas = null);
\App\Product::putMapping($ignoreConflicts = true);
\App\Product::addAllToIndex();
【问题讨论】:
_id 是 elasticsearch 的内部保留字段。如果您的文档尝试更改布局或尽可能省略 _id 字段。 我无法删除数据中的 _id,因为它是必需的。 “如果您的文件更改布局”我不明白...请帮助我 在您的弹性搜索模型中引入一个新字段,如 internal_id 并使用 mongos _id 填充它。 请看elasticseaech官方文档:elastic.co/guide/en/elasticsearch/client/php-api/5.0/index.html 嘿,我正在使用 logstash 将数据传递给弹性搜索。我已经通过在 logstash 配置文件中放入 filter->mutate 并将 _id 分配给其他字段来解决这个问题。重命名 => ["mongo_id", "_id"]。 【参考方案1】:当我通过 terraform 将 cloudwatch 日志重定向到 ElasticSearch 时,我遇到了同样的问题。通过为 cloudwatch 订阅过滤器添加 filter_pattern
解决了这个问题(在它为空之前)。
resource "aws_cloudwatch_log_subscription_filter" "cloudwatch_logs_to_es"
depends_on = [aws_lambda_permission.cloudwatch_allow]
name = var.clw_subscription_filter_name
log_group_name = aws_cloudwatch_log_group.auth0_log_group.name
filter_pattern = "[host, ident, authuser, date, request, status, bytes]"
destination_arn = aws_lambda_function.cwl_stream_lambda.arn
【讨论】:
以上是关于字段 [_id] 是元数据字段,不能添加到文档中。使用索引 API 请求参数的主要内容,如果未能解决你的问题,请参考以下文章