java - 有没有办法使用elasticsearch java api加载包含索引映射的json文件?

标签 java elasticsearch mapping

我的映射太长,为了优化我的代码,我想将映射的 json 格式放入 json 文件中,并使用 elasticsearch java api 加载它。但我没有找到办法做到这一点。我只想将此映射用于一个索引,而不是所有索引。

最佳答案

@Val 已经给出了提示,但是当我使用它时,我的代码并且有方便的代码,所以考虑将其发布在这里:

从字符串格式的文件中读取 JSON 映射的实用程序代码:

/**
 * Get String from file Which contains Index mapping in JSON format.
 *
 * @param fileName file which needs to be read into JSON.
 * @return
 */
public String getStringFromFile(String fileName) throws IOException {
    ClassLoader classLoader = ClassLoader.getSystemClassLoader();
    InputStream in = classLoader.getResourceAsStream(fileName);
    ByteArrayOutputStream result = new ByteArrayOutputStream();
    byte[] buffer = new byte[1024];
    int length;
    while ((length = in.read(buffer)) != -1) {
        result.write(buffer, 0, length);
    }
    return result.toString(StandardCharsets.UTF_8.name());
}

使用上面的代码,您可以使用java高级elasticsearch Rest客户端的CreateIndexRequest API轻松创建索引:

void createIndex(RestHighLevelClient client) throws IOException, URISyntaxException {
            if (!isIndexExist(client, indexName)) {
                String indexString = getStringFromFile("your file name");
                CreateIndexRequest request = new CreateIndexRequest(indexName);
                request.source(indexString, XContentType.JSON);
                client.indices().create(request, RequestOptions.DEFAULT);
            }
    }

如果您遇到任何问题并对任何地点有疑问,请告诉我。

关于java - 有没有办法使用elasticsearch java api加载包含索引映射的json文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57767151/

相关文章:

elasticsearch - ElasticSearch聚合:基于匹配项减去聚合

parameters - 用于查询的 iOS RestKit 参数

javascript - 将对象数组映射到另一个对象数组中

java - 我怎样才能在 Hibernate 中做乘法关系?

java - 我正在尝试下载我的网络服务器上的 pdf 文件,但是下载时我的文件已损坏

java - 如何获取在 Rest Assured 中包含空格并且是另一个键的子键的键的值?

java - 使用二维数组在java中创建文本边框

java - asmack - 接收自定义 XML 消息

c# 将类作为参数传递

ruby-on-rails - Elasticsearch::Transport::Transport::Errors::BadRequest [400] 创建索引时