2013-11-04 19 views
6

Logstash'dan gelen ve aşırı bir şekilde analiz edilen verilerim var. Esasen, "OS X 10.8" alanı, "OS", "X" ve "10.8"'a ayrılacaktır. Var olan veri için eşleme ve yeniden indekslemeyi değiştirebileceğimi biliyorum, ancak gelecekteki verilerde bu sorunu önlemek için varsayılan analiz cihazını (ya ElasticSearch'te veya LogStash'ta) nasıl değiştirebilirim?Varsayılan analizörü ElasticSearch veya LogStash'da değiştirme

Beton Çözüm: Veriyi yeni kümeye ilk kez göndermeden önce tür için bir eşleme oluşturdum. IRC den

Çözüm: Bildiğiniz gibi bir Index Template

cevap

7

oluşturma elasticsearch hiçbir analizörü açıkça belirtilen standart analizörü kullanır. Bu yüzden, şablonları ayarlarken, standart olarak adlandırılan özel analizörünüzü ayarlayabilirsiniz. Ve orada analizör, jetonlayıcı, belirteç filtrelerini ayarlama konusunda kendi kurallarınızı belirleyebilirsiniz.

Burada daha iyi anlamamıza yardımcı olacak bazı yararlı bağlantılar vardır: Bu page analizörleri göre

http://elasticsearch-users.115913.n3.nabble.com/How-we-can-change-Elasticsearch-default-analyzer-td4040411.html

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis.html

6

, sorgu başına belirtilebilir başına alan veya başına indeksi.

index time anda, Elasticsearch bu sırada bir analizör arar: field mapping tanımlanan

  • analizörü.
  • Dizin ayarlarında default adlı bir analizör.
  • standard analizörü.

    • analizörü bir full-text query tanımlanan:

    query time anda, birkaç katman vardır.

  • search_analyzer Alan eşlemede tanımlanmıştır. field mapping numaralı belgede tanımlanan analizör.
  • Dizin ayarlarında default_search adlı bir analizör.
  • Dizin ayarlarında default adlı bir analizör.
  • standard analizörü. Öte yandan

, önemli şey bu page noktası: Bir analizör mantıksal ad altında kayıtlı olduğu

. Daha sonra eşleme tanımlarından veya belirli API'lerden referans alınabilir. Hiçbiri tanımlanmadığında, varsayılanlar kullanılır. Hiçbiri türetilemediğinde varsayılan olarak hangi analizörlerin kullanılacağını tanımlamak için bir seçenek vardır.

Yani varsayılan olarak özel analizörü tanımlamak için tek yol, bu durumda default analizörü pre-defined analyzers birini geçersiz olduğunu. 2.4.6` `üzerinde

{ 
    "settings": { 
    "number_of_shards": 1, 
    "number_of_replicas": 0, 
    "analysis": { 
     "char_filter": { 
     "charMappings": { 
      "type": "mapping", 
      "mappings": [ 
      "\\u200C => " 
      ] 
     } 
     }, 
     "filter": { 
     "persian_stop": { 
      "type": "stop", 
      "stopwords_path": "stopwords.txt" 
     } 
     }, 
     "analyzer": { 
     "default": {<--------- analyzer name must be default 
      "tokenizer": "standard", 
      "char_filter": [ 
      "charMappings" 
      ], 
      "filter": [ 
      "lowercase", 
      "arabic_normalization", 
      "persian_normalization", 
      "persian_stop" 
      ] 
     } 
     } 
    } 
    } 
} 
+0

eserler sayesinde: o bizim analizör için istediğiniz adı kullanmak anlamına gelir, bu endeks ayarı basit bir örnek burada

default adlandırılmalıdır. Diğer cevap işe yaramadı. – cahen

+0

@cahen Size yardımcı olabileceğine sevindim. –

İlgili konular