ElasticSearch 6,copy_to 具有动态索引映射
ElasticSearch 6, copy_to with dynamic index mappings
也许我遗漏了一些简单的东西,但仍然无法弄清楚以下内容:
从 ES 6.x 开始,_all
字段已弃用,建议使用 copy_to
指令 (https://www.elastic.co/guide/en/elasticsearch/reference/current/copy-to.html)。
但是,我的印象是您需要明确指定要复制到自定义 _all
字段的字段。但是如果我使用动态映射,我事先不知道字段,因此不能使用 copy_to
?
有什么方法可以告诉 ES 将所有遇到的字段复制到自定义 _all
字段,以便我可以搜索所有字段?
提前致谢!
您可以使用 Dynamic Templates。基本上创建一个索引,添加自定义 catch_all
字段,然后为所有字符串字段指定特定的 属性。 (以前没有这样做过,但我相信这是现在唯一的方法。因为当你放置动态模板时字段 catch_all
已经存在,它不会匹配 catch_all
- 这意味着catch_all
不会复制到自身,但你自己检查一下以确保)。
PUT my_index
{
"mappings": {
"_doc": {
"dynamic_templates": [
{
"strings": {
"match_mapping_type": "string",
"mapping": {
"type": "text",
"copy_to": "catch_all"
}
}
}
]
}
}
}
也许我遗漏了一些简单的东西,但仍然无法弄清楚以下内容:
从 ES 6.x 开始,_all
字段已弃用,建议使用 copy_to
指令 (https://www.elastic.co/guide/en/elasticsearch/reference/current/copy-to.html)。
但是,我的印象是您需要明确指定要复制到自定义 _all
字段的字段。但是如果我使用动态映射,我事先不知道字段,因此不能使用 copy_to
?
有什么方法可以告诉 ES 将所有遇到的字段复制到自定义 _all
字段,以便我可以搜索所有字段?
提前致谢!
您可以使用 Dynamic Templates。基本上创建一个索引,添加自定义 catch_all
字段,然后为所有字符串字段指定特定的 属性。 (以前没有这样做过,但我相信这是现在唯一的方法。因为当你放置动态模板时字段 catch_all
已经存在,它不会匹配 catch_all
- 这意味着catch_all
不会复制到自身,但你自己检查一下以确保)。
PUT my_index
{
"mappings": {
"_doc": {
"dynamic_templates": [
{
"strings": {
"match_mapping_type": "string",
"mapping": {
"type": "text",
"copy_to": "catch_all"
}
}
}
]
}
}
}