在ElasticSearch索引中添加根级别的“Metadata”字段

oprakyz7  于 2023-03-22  发布在  ElasticSearch
关注(0)|答案(2)|浏览(174)

我有一个标准的ElasticSearch索引,由一个主键键控,每个键下有一个重复的文档结构。
我有一个“datasource id”字段,它适用于索引中的每个文档(意味着它在每个文档中都是相同的值)。有没有办法在索引的“根”级别添加此信息,而不是在每个文档中插入相同的值?

wfveoks0

wfveoks01#

我想你正在寻找_meta field。当你创建索引时,你可以在其中添加数据库ID:

PUT my_index
{
  "mappings": {
      "_doc": {
          "_meta": {
            "databaseID": "MY-DB-ID"
          }
      },
      "properties": {
        all your field go here...
      }
    }
  }
}
uqjltbpv

uqjltbpv2#

它实际上在ES7中改变了,你可以使用drop _doc。

PUT my_index
{
  "mappings": {
      "_meta": {
          "databaseID": "MY-DB-ID"
      },
      "properties": {
         # all your field go here...
      }
    }
  }
}

如果不删除_doc中的数据嵌套,则会收到类似于以下内容的400错误:

{'error': {'root_cause': [{'type': 'mapper_parsing_exception', 'reason': 'Root mapping definition has unsupported parameters:  [_doc : {_meta={databaseID=MY-DB-ID!}}]'}], 'type': 'mapper_parsing_exception', 'reason': 'Failed to parse mapping [_doc]: Root mapping definition has unsupported parameters:  [_doc : {_meta={databaseID=MY-DB-ID!}}]', 'caused_by': {'type': 'mapper_parsing_exception', 'reason': 'Root mapping definition has unsupported parameters:  [_doc : {_meta={databaseID=MY-DB-ID!}}]'}}, 'status': 400}

相关问题