2016-05-24 1 views
2

Comment définir un analyseur personnalisé qui sera utilisé dans plusieurs index (au niveau d'un cluster)? Tous les exemples que je peux trouver montrent comment créer un analyseur personnalisé sur un index spécifique.Analyseur de niveau de groupe de recherche élastique

Mon analyseur par exemple:

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" 
     } 
     } 
    } 
    } 
} 

Toute idée comment changer mon champ d'analyse au niveau du cluster?

merci

Répondre

1

Il n'y a pas de "portée" pour les analyseurs. Mais vous pouvez faire quelque chose de similaire avec 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" 
      ] 
     } 
     } 
    } 
    } 
} 

Et "template" vous devez mettre le nom des indices que ce modèle devrait être appliqué à lorsque l'indice est créé. Vous pouvez très bien spécifier "*" et correspondant à tous les indices. Je pense que c'est le mieux que tu puisses faire pour ce que tu veux.