2017-10-16 4 views
0

J'ai un champ qui a été initialement défini sur "index": false parce que nous ne pensions pas que nous aurions jamais à interroger sur ce champ particulier. C'est maintenant environ 9 mois plus tard et nous avons une nouvelle demande de fonctionnalité qui va nous obliger à interroger sur ce champ.Comment faire pour modifier un champ de index = false à index = true dans ElasticSearch

Je sais ES offre quelques fonctionnalités intéressantes comme fields qui vous permettent d'ajouter plus de fonctionnalités à un champ, mais il ne semble pas vous permettre d'aller index = false-index = true en ajoutant simplement un sous-champ. Après quelques recherches, je n'ai pas été capable de trouver une solution à ce problème qui n'implique pas 1) la création d'un nouveau champ ou 2) la réindexation de toutes les données.

Est-ce que quelqu'un connaît une façon propre/sans effet secondaire d'ajouter ce type de fonctionnalité à un champ existant? Si non, quel est le processus suggéré?

Voici ce que le champ actuel ressemble à:

{ 
    "mappings": { 
     "entity": { 
     "properties": { 
      "contentType": { 
      "type": "keyword", 
      "index": false 
      } 
     } 
     } 
    } 
} 

Comme je l'ai dit, je suis à la recherche pour trouver la façon la plus propre de changer "index" à true

Merci!

+0

Autant que je sache, la cartographie existante est immuable et c'est pourquoi vous ne voyez que ces deux approches – Miek

+0

Ahh vraiment ... ok donc entre ces deux options, la création d'un nouveau champ est probablement la meilleure option pour obtenir des choses travailler dès que possible. –

+0

Combien de contenu avez-vous? La réindexation est probablement le choix idéal, mais vous avez raison, ajouter un nouveau champ qui est les mêmes données qui peuvent être retournées avec la source est probablement votre solution la plus facile. – Miek

Répondre

1

Vous devez créer un nouvel index et réindexer j'ai peur.

Reindex API peut être une aide précieuse cependant.