我正在尝试在 elasticsearch 中索引 json 文档。我没有文档的架构,它是动态的。
我需要将字段存储为已分析和未分析。我也需要它是动态的。
- 我们可以使用动态模板来实现这一点吗?
- 是否可以为已分析和未分析的字段名称保持相同?
- 搜索这些字段时是否需要做任何特殊处理?
我正在尝试在 elasticsearch 中索引 json 文档。我没有文档的架构,它是动态的。
我需要将字段存储为已分析和未分析。我也需要它是动态的。
您将通过使用动态模板来完成此操作,是的,通过为字段(或字段模式,例如所有字符串)创建动态映射,如下所示:
"dynamic_templates":[
{
"template_myStringFields":{
"match":"somepattern",
"mapping":{
"type":"multi_field",
"fields":{
"{name}":{
"type":"string",
"index":"not_analyzed",
},
"_tokenized":{
"type":"string",
"index":"analyzed",
}
}
}
}
}...
然后,要同时搜索已分析和未分析,如果您不喜欢同时在两个字段中搜索,则可以使用“模式匹配”,或者如果可以在任何字段中匹配,则搜索“_all”字段。字段名称相同,但带有后缀,如上例中的 myField._tokenized。