2016-04-14 10 views
1

Guten Tag,Elasticsearch Standardzuordnung verschachtelte Felder

Ich habe zu versuchen, arbeiten ein Feld zu zwingen, eine geo_point zu sein, aber das Feld befindet sich innerhalb eines Feldes innerhalb eines Dokuments. Ich benutze Elasticsearch 1.7 und arbeite daran, alle Felder zu vergleichen, damit ich auf 2.3.1 upgraden kann. Beispiel der aktuellen dynamischen erstellt Mapping:

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

Jetzt habe ich mehrere Dokumente, die genau die gleiche Struktur haben, und ich möchte es auf meine Standardzuordnung hinzuzufügen, so dass für jeden neuen Index, der als geo_point abgebildet wird . Bisher war ich nicht in der Lage, dies zu erreichen, es kommt immer doppelt vor. Unten ist meine aktuelle Standard-Mapping.json

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

Jede Hilfe würde sehr geschätzt werden. Ich habe versucht, es einfach auf den Standort zu vereinfachen: Typ: geo_point, habe ich versucht, andere Schritte dazwischen zu entfernen, vergeblich. Hier

ist ein Beispiel eines Dokuments:

{ 
    "_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 
    ] 
} 

Vielen Dank im Voraus für jede Hilfe.

Hier ist, was meine endgültige Antwort endete wie aus. Nochmals vielen Dank an alle, die geantwortet haben, und ich hoffe, dass dies einigen anderen Neulingen in der ELK-Welt helfen wird.

{ 
    "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 } 
       } 
      } 
      } 
     ] 
     } 
    } 
    } 
} 
+0

Auch diese Verwendung ist Elasticsearch 1.7. Mein Ziel ist es, unsere Dokumente neu zu indizieren, so dass wir auf 2.3.1 upgraden können. –

+0

Können Sie ein Beispieldokument anzeigen, das Sie indexieren? – Val

+0

@Val - Ich habe ein Beispiel hinzugefügt. –

Antwort

1

Können Sie eine dynamische Vorlage verwenden?

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

können Sie ändern _ default_ auf den Namen des Index

+0

Nun möchte ich vermeiden, eine dynamische Vorlage für jedes einzelne Dokument erstellen zu müssen. Ich habe versucht, hinzuzufügen, was Sie haben, um meine Standard-Mappings.json, aber das hat nicht funktioniert. –

+0

Ok, also habe ich nicht genau verstanden, wie die dynamische Vorlage funktioniert hat. Bis jetzt scheint das für mich zu funktionieren. Danke für die Antwort!!! –

Verwandte Themen