How to create index using json file?

Hi,

How can I create an index using a json file ?

Below code is not creating mappings for me:

import jakarta.json.stream.JsonParser;
import org.opensearch.client.json.JsonpMapper;
import org.opensearch.client.opensearch.OpenSearchClient;
import org.opensearch.client.opensearch._types.mapping.TypeMapping;


  public void createIndex() {
    try {
      JsonpMapper mapper = openSearchClient._transport().jsonpMapper();
      JsonParser parser = mapper.jsonProvider()
                                .createParser(new StringReader(Files.readString(Path.of(Objects.requireNonNull(getClass()
                                                                                                 .getClassLoader()
                                                                                                 .getResource(openSearchProperties.getIndexSource()))
                                                                                               .getPath()))));

      CreateIndexRequest createIndexRequest = new CreateIndexRequest.Builder().index(openSearchProperties.getIndexName())
                                                                              .mappings(TypeMapping._DESERIALIZER.deserialize(parser, mapper))
                                                                              .build();
      CreateIndexResponse createIndexResponse = openSearchClient.indices().create(createIndexRequest);
      if (FALSE.equals(createIndexResponse.acknowledged())) {
        throw new RuntimeException("Create index response is not acknowledged");
      }
    } catch (Exception ex) {
      throw new RuntimeException("Failed to create index");
    }
  }

Can you share more about what the inputs look like and what errors you are getting? Also, what versions of client and server you are using.

InputStream inputStream = getClass().getClassLoader().getResourceAsStream(“mapping.json”);
JsonpMapper mapper = client._transport().jsonpMapper();
JsonParser parser = mapper.jsonProvider().createParser(inputStream);
// CreateIndexRequest.Builder().index(index).mappings(TypeMapping._DESERIALIZER.deserialize(parser, mapper))
client.indices().create(createIndexRequest → createIndexRequest.index(index)
.mappings(TypeMapping._DESERIALIZER.deserialize(parser, mapper)));

This worked for me

Awesome! Would you be up for offering sample code for our docs?

Hi, I am struggling with same problem. The index is created but with empty mappings. Is there any sample working code?