Jelajahi Sumber

add initial data

Shinsuke Sugaya 9 tahun lalu
induk
melakukan
4952adc28e

+ 31 - 0
src/main/java/org/codelibs/fess/client/FessEsClient.java

@@ -2,7 +2,9 @@ package org.codelibs.fess.client;
 
 import static org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner.newConfigs;
 
+import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -17,6 +19,7 @@ import javax.annotation.PreDestroy;
 import org.apache.commons.codec.Charsets;
 import org.codelibs.core.beans.util.BeanUtil;
 import org.codelibs.core.io.FileUtil;
+import org.codelibs.core.io.ResourceUtil;
 import org.codelibs.core.lang.StringUtil;
 import org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner;
 import org.codelibs.elasticsearch.runner.ElasticsearchClusterRunner.Configs;
@@ -339,6 +342,34 @@ public class FessEsClient implements Client {
                 } else {
                     logger.warn("Failed to create " + configIndex + "/" + configType + " mapping.");
                 }
+
+                String dataPath = indexConfigPath + "/" + configIndex + "/" + configType + ".bulk";
+                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\":{")) {
+                                    return StringUtil.EMPTY;
+                                }
+                            } else if (prev.startsWith("{\"index\":{")) {
+                                IndexRequestBuilder requestBuilder = client.prepareIndex(configIndex, configType).setSource(line);
+                                builder.add(requestBuilder);
+                            }
+                            return StringUtil.EMPTY;
+                        });
+                        BulkResponse response = builder.execute().actionGet();
+                        if (response.hasFailures()) {
+                            logger.warn("Failed to register " + dataPath.toString() + ": " + response.buildFailureMessage());
+                        }
+                    } catch (Exception e) {
+                        logger.warn("Failed to create " + configIndex + "/" + configType + " mapping.");
+                    }
+                }
             } else if (logger.isDebugEnabled()) {
                 logger.debug(configIndex + "/" + configType + " mapping exists.");
             }

+ 8 - 0
src/main/resources/fess_indices/.fess_config/scheduled_job.bulk

@@ -0,0 +1,8 @@
+{"index":{"_index":".fess_config","_type":"scheduled_job","_id":"1"}}
+{"name":"Crawler","target":"all","cronExpression":"0 0 0 * * ?","scriptType":"groovy","scriptData":"return container.getComponent(\"crawlJob\").execute(executor);","jobLogging":true,"crawler":true,"available":true,"sortOrder":0,"createdBy":"system","createdTime":0,"updatedBy":"system","updatedTime":0}
+{"index":{"_index":".fess_config","_type":"scheduled_job","_id":"2"}}
+{"name":"Minutely Tasks","target":"all","cronExpression":"0 * * * * ?","scriptType":"groovy","scriptData":"return container.getComponent(\"aggregateLogJob\").execute();","jobLogging":false,"crawler":false,"available":true,"sortOrder":0,"createdBy":"system","createdTime":0,"updatedBy":"system","updatedTime":0}
+{"index":{"_index":".fess_config","_type":"scheduled_job","_id":"3"}}
+{"name":"Hourly Tasks","target":"all","cronExpression":"0 0 * * * ?","scriptType":"groovy","scriptData":"return container.getComponent(\"updateStatsJob\").execute() + container.getComponent(\"updateHotWordJob\").execute();","jobLogging":false,"crawler":false,"available":true,"sortOrder":0,"createdBy":"system","createdTime":0,"updatedBy":"system","updatedTime":0}
+{"index":{"_index":".fess_config","_type":"scheduled_job","_id":"4"}}
+{"name":"Daily Tasks","target":"all","cronExpression":"0 0 0 * * ?","scriptType":"groovy","scriptData":"return container.getComponent(\"purgeLogJob\").execute();","jobLogging":false,"crawler":false,"available":true,"sortOrder":0,"createdBy":"system","createdTime":0,"updatedBy":"system","updatedTime":0}