我有一个标准的ElasticSearch索引,由一个主键键控,每个键下有一个重复的文档结构。我有一个“datasource id”字段,它适用于索引中的每个文档(意味着它在每个文档中都是相同的值)。有没有办法在索引的“根”级别添加此信息,而不是在每个文档中插入相同的值?
wfveoks01#
我想你正在寻找_meta field。当你创建索引时,你可以在其中添加数据库ID:
_meta
PUT my_index { "mappings": { "_doc": { "_meta": { "databaseID": "MY-DB-ID" } }, "properties": { all your field go here... } } } }
uqjltbpv2#
它实际上在ES7中改变了,你可以使用drop _doc。
PUT my_index { "mappings": { "_meta": { "databaseID": "MY-DB-ID" }, "properties": { # all your field go here... } } } }
如果不删除_doc中的数据嵌套,则会收到类似于以下内容的400错误:
_doc
{'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}
2条答案
按热度按时间wfveoks01#
我想你正在寻找
_meta
field。当你创建索引时,你可以在其中添加数据库ID:uqjltbpv2#
它实际上在ES7中改变了,你可以使用drop _doc。
如果不删除
_doc
中的数据嵌套,则会收到类似于以下内容的400错误: