4

我正在尝试在 elasticsearch 中索引 json 文档。我没有文档的架构,它是动态的。

我需要将字段存储为已分析和未分析。我也需要它是动态的。

  1. 我们可以使用动态模板来实现这一点吗?
  2. 是否可以为已分析和未分析的字段名称保持相同?
  3. 搜索这些字段时是否需要做任何特殊处理?
4

1 回答 1

0

您将通过使用动态模板来完成此操作,是的,通过为字段(或字段模式,例如所有字符串)创建动态映射,如下所示:

"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。

于 2013-08-19T19:30:30.900 回答