2016-04-20 12 views
5

Próbuję utworzyć indeks w ES za pomocą określonego analizatora i mapowania, używając JEST. ja używam następujący kod:Jak dodać mapowanie w ElasticSearch za pomocą JEST

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

    JestResult result = client.execute(createIndex); 

I to jest 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" 
     } 
     } 
    } 
    } 
} 

Podczas gdy indeks jest crated poprawnie z określonymi „Ustawienia”, sekcja „mapowania” nie robi pracować i nie jestem w stanie ustawić mapowania dla pola "Nazwa". Ktoś ma pomysł? Czy istnieje JESt w pewnym rodzaju putmapping(), który umożliwia dodawanie odwzorowań? Idealnie chciałbym móc ustawić field_name dynamicznie, a nie w pliku .json.

Thnks

Odpowiedz

0

znalazłem swoje pytanie, starając się zobaczyć, czy mogę utworzyć indeks i mapowania za jednym zamachem. Skończyło się na tym, że właśnie tworzyłem drugie żądanie tworzenia mapowań.

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()); 
    } 
Powiązane problemy