多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Dot Expander Processor(点扩展器处理器) 原文链接 : [https://www.elastic.co/guide/en/elasticsearch/reference/5.3/dot-expand-processor.html](https://www.elastic.co/guide/en/elasticsearch/reference/5.3/dot-expand-processor.html) 译文链接 : [http://www.apache.wiki/pages/viewpage.action?pageId=10028281](http://www.apache.wiki/pages/viewpage.action?pageId=10028281) 贡献者 : [那伊抹微笑](/display/~wangyangting),[ApacheCN](/display/~apachecn),[Apache中文网](/display/~apachechina) 将一个带有 **dot**(点)的 **field**(字段)扩展到一个 **obejct** **field**(对象字段)中。该 **processor**(处理器)可以让名称中带有点的 **field**(字段)能被其 **pipeline**(管道)中的其它处理器访问。否则,这些 <<**accessing-data-in-pipelines,fields**> 不能被任何 **processor**(处理器)访问。 ## Table 34. Dot Expand Options(表 34\. 点扩展选项) | Name(名称) | Required(必要的) | Default(默认值) | Description(描述) | | --- | --- | --- | --- | | **`field`** | **yes** | **-** | 要扩展到 **object** **field**(对象字段)中的 **field**(字段) | | **`path`** | **no** | **-** | 包含要扩展的字段的字段。只有当扩展的字段是另一个对象字段时才需要,因为该 **`field` **选项只能为 **leaf** **fields**(叶子字段)。 | ``` { "dot_expander": { "field": "foo.bar" } } ``` 例如,点扩展处理器将会转换此文档 :  ``` { "foo.bar" : "value" } ``` 成为 :  ``` { "foo" : { "bar" : "value" } } ```  如果已经有一个 **bar** 字段内嵌在 **foo** 下,那么该 **processor**(处理器)将会合并 **foo.bar** 字段到它里面去。如果该字段是一个 **scalar value**(标量值),那么它将会将该字段转换为一个 **array**(数组)字段。 例如,以下文档 :  ``` { "foo.bar" : "value2", "foo" : { "bar" : "value1" } } ``` 由 **dot_expander** 处理器转换成 :  如果 **leaf** **field**(叶子字段)外的字段与预先存在的字段的 **name**(名称)一样,那么该 **field**(字段)需要先 **rename**(重命名)。 考虑以下 **document**(文档):  ``` { "foo": "value1", "foo.bar": "value2" } ``` 在使用 **dot_expander** 处理器之前需要重命名 **foo** 字段。所以为了使该 **foo.bar** 字段正确的扩展到 **foo** 字段下的 **bar** 字段,则应该使用以下的 **pipeline**(管道):  ``` { "processors" : [ { "rename" : { "field" : "foo", "target_field" : "foo.bar"" } }, { "dot_expander": { "field": "foo.bar" } } ] } ``` 这样做的原因是因为该 **Ingest** 不知道如何自动的将 **scalar field**(标量字段)转换为 **object** **field**(对象字段)。