2016-04-20 15 views
5

Sto cercando di creare un indice in ES con analizzatore e mappatura specifici, usando JEST. i m utilizzando il seguente codice:Come aggiungere la mappatura in ElasticSearch usando JEST

CreateIndex createIndex = new CreateIndex.Builder(indexName) 
    .settings(
      ImmutableSettings.builder() 
        .loadFromClasspath(
          "jestconfiguration.json" 
        ).build().getAsMap() 
    ).build(); 

    JestResult result = client.execute(createIndex); 

e questo è il jestconfiguration.java

{ 
    "settings": { 
    "analysis": { 
     "analyzer": { 
     "second": { 
      "type": "custom", 
      "tokenizer": "standard", 
      "filter": [ 
      "lowercase", 
      "synonym" 
      ] 
     } 
     }, 
     "filter": { 
     "synonym" : { 
      "type" : "synonym", 
      "synonyms" : [ 
       "smart phone => smartphone" 
       ]    
        } 
       } 
     } 
    }, 
    "mappings": { 
    "index_type": { 
     "properties": { 
     "Name": { 
      "type": "string", 
      "analyzer": "second" 
     } 
     } 
    } 
    } 
} 

Mentre, l'indice è crated correttamente con le "Impostazioni" specificate, la sezione "mappature" non lo fa lavoro e non sono in grado di impostare la mappatura per il campo "Nome". Qualcuno ha un'idea? C'è una specie di putmapping() in JESt che ti consente di aggiungere i mapping? Idealmente mi piacerebbe essere in grado di impostare il campo nome dinamicamente e non nel file .json.

Thnks

risposta

0

Ho trovato la tua domanda durante il tentativo di vedere se riuscivo a creare un indice e mappature in un colpo solo. Ho finito per creare una seconda richiesta per la creazione di mapping.

String mappingJson = new String(ByteStreams.toByteArray(mappingFile.getInputStream())); 
    boolean indexExists = client.execute(new IndicesExists.Builder(configuration.getIndex()).build()).isSucceeded(); 
    if (indexExists) { 
     logger.info("Updating elasticsearch type mapping."); 
     client.execute(new PutMapping.Builder(configuration.getIndex(), configuration.getBaseType(), mappingJson).build()); 
    } else { 
     logger.info("Creating elasticsearch index and type mapping."); 
     client.execute(new CreateIndex.Builder(configuration.getIndex()).build()); 
     client.execute(new PutMapping.Builder(configuration.getIndex(), configuration.getBaseType(), mappingJson).build()); 
    } 
Problemi correlati