From 7e73136d27801a25d30313cb5dba7c9a2a14f6a9 Mon Sep 17 00:00:00 2001 From: Kaoru FUZITA <kaorufuzita@gmail.com> Date: Wed, 11 Nov 2015 16:03:51 +0900 Subject: [PATCH] fix id of document index --- pom.xml | 5 ++ .../codelibs/fess/es/client/FessEsClient.java | 46 +++++++++++++------ .../fess_indices/.fess_user/role.bulk | 2 +- .../fess_indices/.fess_user/user.bulk | 2 +- 4 files changed, 39 insertions(+), 16 deletions(-) diff --git a/pom.xml b/pom.xml index 0e864af5c..f9bbc4f77 100644 --- a/pom.xml +++ b/pom.xml @@ -494,6 +494,11 @@ <artifactId>jsonic</artifactId> <version>1.3.8</version> </dependency> + <dependency> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-databind</artifactId> + <version>2.6.3</version> + </dependency> <!-- template --> <dependency> diff --git a/src/main/java/org/codelibs/fess/es/client/FessEsClient.java b/src/main/java/org/codelibs/fess/es/client/FessEsClient.java index e5d3a814e..46cedad4d 100644 --- a/src/main/java/org/codelibs/fess/es/client/FessEsClient.java +++ b/src/main/java/org/codelibs/fess/es/client/FessEsClient.java @@ -163,6 +163,8 @@ import org.elasticsearch.threadpool.ThreadPool; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.io.BaseEncoding; public class FessEsClient implements Client { @@ -396,21 +398,37 @@ public class FessEsClient implements Client { if (ResourceUtil.isExist(dataPath)) { try { final BulkRequestBuilder builder = client.prepareBulk(); - Arrays.stream(FileUtil.readUTF8(dataPath).split("\n")).reduce((prev, line) -> { - if (StringUtil.isBlank(prev)) { - if (line.startsWith("{\"index\":{")) { - return line; - } else if (line.startsWith("{\"update\":{")) { - return line; - } else if (line.startsWith("{\"delete\":{")) { + ObjectMapper mapper = new ObjectMapper(); + Arrays.stream(FileUtil.readUTF8(dataPath).split("\n")).reduce( + (prev, line) -> { + try { + if (StringUtil.isBlank(prev)) { + Map<String, Map<String, String>> result = + mapper.readValue(line, new TypeReference<Map<String, Map<String, String>>>() { + }); + if (result.keySet().contains("index")) { + return line; + } else if (result.keySet().contains("update")) { + return line; + } else if (result.keySet().contains("delete")) { + return StringUtil.EMPTY; + } + } else { + Map<String, Map<String, String>> result = + mapper.readValue(prev, new TypeReference<Map<String, Map<String, String>>>() { + }); + if (result.keySet().contains("index")) { + final IndexRequestBuilder requestBuilder = + client.prepareIndex(configIndex, configType, result.get("index").get("_id")) + .setSource(line); + builder.add(requestBuilder); + } + } + } catch (Exception e) { + logger.warn("Failed to parse " + configIndex + "/" + configType + " mapping."); + } return StringUtil.EMPTY; - } - } else if (prev.startsWith("{\"index\":{")) { - final IndexRequestBuilder requestBuilder = client.prepareIndex(configIndex, configType).setSource(line); - builder.add(requestBuilder); - } - return StringUtil.EMPTY; - }); + }); final BulkResponse response = builder.execute().actionGet(); if (response.hasFailures()) { logger.warn("Failed to register " + dataPath.toString() + ": " + response.buildFailureMessage()); diff --git a/src/main/resources/fess_indices/.fess_user/role.bulk b/src/main/resources/fess_indices/.fess_user/role.bulk index 72b534122..176d9ece3 100644 --- a/src/main/resources/fess_indices/.fess_user/role.bulk +++ b/src/main/resources/fess_indices/.fess_user/role.bulk @@ -1,2 +1,2 @@ {"index":{"_index":".fess_user","_type":"role","_id":"YWRtaW4="}} -{"name":"admin","id":"YWRtaW4="} +{"name":"admin"} diff --git a/src/main/resources/fess_indices/.fess_user/user.bulk b/src/main/resources/fess_indices/.fess_user/user.bulk index 5f8d1cec5..4b01251b0 100644 --- a/src/main/resources/fess_indices/.fess_user/user.bulk +++ b/src/main/resources/fess_indices/.fess_user/user.bulk @@ -1,2 +1,2 @@ {"index":{"_index":".fess_user","_type":"user","_id":"YWRtaW4="}} -{"password":"8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918","roles":["YWRtaW4="],"name":"admin","id":"YWRtaW4="} +{"password":"8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918","roles":["YWRtaW4="],"name":"admin"} -- GitLab