弹性搜索动态字段存储为已分析和未分析

时间:2013-08-19 19:08:51

标签: elasticsearch

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

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

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

1 个答案:

答案 0 :(得分: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。