Elasticsearch默认映射嵌套字段

时间:2016-04-14 19:00:36

标签: elasticsearch elasticsearch-mapping

下午好,

我一直在尝试强制将字段强制为geo_point,但该字段位于文档内部的字段内。我正在使用elasicsearch 1.7并致力于使所有字段匹配,因此我可以升级到2.3.1。 当前动态创建映射的示例:

{
  "index-2016.01.01" : {
    "mappings" : {
      "document" : {
        "properties" : {
          "geoip" : {
            "properties" : {
              "location" : {
                "type" : "double"
              }
            }
          }
        }
      }
    }
  }
}

现在我有几个具有完全相同结构的文档,我想将它添加到我的默认映射中,以便为每个新索引将其映射为geo_point。到目前为止,我还没有能够实现这一点,它只是作为一个双重进入。下面是我当前的default-mapping.json

{
  "_default_" : {
    "properties" : {
      "level" : {
        "type" : "string",
        "norms" : {
          "enabled" : false
        }
      },
      "line" : {
        "type" : "string",
        "norms" : {
          "enabled" : false
        }
      },
      "geoip" : {
        "properties" : {
          "location" : {
            "type" : "geo_point"
          }
        }
      }
    }
  }
}

非常感谢任何帮助。我已经尝试将其简化为只是位置:type:geo_point,我已经尝试删除其中的其他步骤但无济于事。

以下是文档示例:

{
  "_index": "logstash-2016.04.14",
  "_type": "nginx-access",
  "_id": "AVQV6PXtpRWl9K_VbKfj",
  "_score": null,
  "_source": {
    "message": "172.16.120.108 - - [14/Apr/2016:12:54:24 -0500] \"GET /center-unit-service/find-by-building/LWWSESSID/vdglqit5hod3m7sqvechjbrnn4?building=142 HTTP/1.1\" 200 119 \"https://lwhwms-dev7.corp.good-sam.com/participant-form/new/LWWSESSID/vdglqit5hod3m7sqvechjbrnn4\" \"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36\" 0.239 \"lwhwms-dev7.corp.good-sam.com\"",
    "clientip": "172.16.120.108",
    "ident": "-",
    "auth": "-",
    "verb": "GET",
    "request": "/center-unit-service/find-by-building/LWWSESSID/vdglqit5hod3m7sqvechjbrnn4?building=142",
    "httpversion": "1.1",
    "response": "200",
    "bytes": 119,
    "referer": "https://lwhwms-dev7.corp.good-sam.com/participant-form/new/LWWSESSID/vdglqit5hod3m7sqvechjbrnn4",
    "agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36",
    "response_time": 0.239,
    "server_name": "lwhwms-dev7.corp.good-sam.com",
    "env": "dev7",
    "host": "moses-web1-dev",
    "type": "nginx-access",
    "source": "/var/log/nginx/lwhwms-access.log",
    "timestamp": "2016-04-14T12:54:24.000-0500",
    "parsestamp": "2016-04-14T12:54:27.965-0500",
    "application": "lwhwms",
    "@version": "1",
    "@timestamp": "2016-04-14T17:54:24.000Z",
    "geoip": {
      "ip": "172.16.120.108",
      "country_code2": "US",
      "country_code3": "USA",
      "country_name": "United States",
      "continent_code": "NA",
      "city_name": "0010 - National Campus",
      "postal_code": "57117",
      "latitude": 43.50120000000001,
      "longitude": -96.786,
      "dma_code": 0,
      "area_code": 0,
      "location": [
        -96.786,
        43.50120000000001
      ]
    },
    "ua": {
      "name": "Chrome",
      "os": "Windows 7",
      "os_name": "Windows 7",
      "device": "Other",
      "major": "49",
      "minor": "0",
      "patch": "2623"
    },
    "referrer": null
  },
  "sort": [
    1460656464000,
    1460656464000
  ]
}

提前感谢您的帮助。

这是我的最终答案最终结果。再次感谢所有回复的人,我希望这将有助于ELK世界的其他新手。

{
  "template_1" : {
    "template" : "*",
    "mappings" : {
      "_default_" : {
        "dynamic_templates" : [
          {
            "geoip-location" : {
              "path_match" : "geoip.location",
              "mapping" : {
                "type" : "geo_point"
              }
            }
          },
          {
            "geoip-ip" : {
              "path_match" : "geoip.ip",
              "mapping" : {
                "type" : "string",
                "norms" : { "enabled" : false }
              }
            }
          },
          {
            "level-string" : {
              "match" : "level",
              "mapping" : {
                "type" : "string",
                "norms" : { "enabled" : false }
              }
            }
          },
          {
            "line-string" : {
              "match" : "line",
              "mapping" : {
                "type" : "string",
                "norms" : { "enabled" : false }
              }
            }
          }
        ]
      }
    }
  }
}

1 个答案:

答案 0 :(得分:1)

您可以使用动态模板吗?

{
   "mappings":{
      "_default_":{
         "dynamic_templates":[
            {
               "geoip":{
                  "path_match":"geoip.location",
                  "mapping":{
                     "type":"geo_point"
                  }
               }
            }
         ]
      }
   }
}

您可以将_ default_更改为索引名称

相关问题