2016-05-24 8 views
2

Wie kann ich einen benutzerdefinierten Analysator definieren, der in mehr als einem Index (in einer Cluster-Ebene) verwendet wird? Alle Beispiele, die ich finden kann, zeigen, wie man einen benutzerdefinierten Analysator für einen bestimmten Index erstellt.Elastische Suche Cluster Level Analyzer

Mein Analysator zum Beispiel:

PUT try_index 
{ 
    "settings": { 
    "analysis": { 
     "filter": { 
     "od_synonyms": { 
      "type": "synonym", 
      "synonyms": [ 
      "dog, cat => animal", 
      "john, lucas => boy", 
      "emma, kate => girl" 
      ] 
     } 
     }, 
     "analyzer": { 
     "od_analyzer": { 
      "tokenizer": "standard", 
      "filter": [ 
      "lowercase", 
      "od_synonyms" 
      ] 
     } 
     } 
    } 
    }, 
    "mappings": { 
    "record": { 
     "properties": { 
     "name": { 
      "type": "string", 
      "analyzer":"standard", 
      "search_analyzer": "od_analyzer" 
     } 
     } 
    } 
    } 
} 

Jede Idee, wie mein Analysator Umfang auf Clusterebene ändern?

danke

Antwort

1

Es gibt keinen "Anwendungsbereich" für Analysatoren. Aber man kann etwas Ähnliches tun mit index templates:

PUT /_template/some_name_here 
{ 
    "template": "a*", 
    "order": 0, 
    "settings": { 
    "analysis": { 
     "filter": { 
     "od_synonyms": { 
      "type": "synonym", 
      "synonyms": [ 
      "dog, cat => animal", 
      "john, lucas => boy", 
      "emma, kate => girl" 
      ] 
     } 
     }, 
     "analyzer": { 
     "od_analyzer": { 
      "tokenizer": "standard", 
      "filter": [ 
      "lowercase", 
      "od_synonyms" 
      ] 
     } 
     } 
    } 
    } 
} 

Und "template" sollten Sie den Namen der Indizes setzen, die diese Vorlage sollte angewendet werden, wenn der Index erstellt wird. Sie können "*" sehr gut spezifizieren und alle Indizes zusammenbringen. Ich denke, das ist das Beste, was du für das tun kannst, was du willst.