【问题标题】:Field [_id] is a metadata field and cannot be added inside a document. Use the index API request parameters字段 [_id] 是元数据字段,不能添加到文档中。使用索引 API 请求参数
【发布时间】: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 填充它。
  • 嘿,我正在使用 logstash 将数据传递给弹性搜索。我已经通过在 logstash 配置文件中放入 filter->mutate 并将 _id 分配给其他字段来解决这个问题。重命名 => ["mongo_id", "_id"]。

标签: laravel mongodb elasticsearch


【解决方案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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 2021-05-11
    • 2017-12-27
    • 2011-08-28
    • 2017-09-01
    相关资源
    最近更新 更多