我正在努力在将Fess放在OpenShift之前,使用Docker来安装(笑)
首先
我有种感觉,似乎需要支持全文搜索,所以我希望在OpenShift上引入Fess。
话的开始是要试试看用Docker来构建Fess和Elasticsearch这样的东西的那一段。
因为在OpenShift上无法自由地从DockerHub下载镜像,所以我正在寻找按照步骤安装和构建的方法,但目前尚未成功。
顺便说一下,我不懂Java哈哈
环境
-
- Docker for Windows
-
- Elasticsearch:7.3.2
-
- Fess:13.3.1
OpenJDK11(AdoptOpenJDK)
准备好(docker-compose)
我正在根据Fess的安装手册进行安装,但不幸的是我无法成功地进行安装。
暫時創建的docker-compose.yaml和Dockerfile如下所示。
首先,让我们来谈谈目录结构。
├─ ubuntu/
├─ elasticsearch/
│ │─ fess_plugins
│ │─ docker-entrypoint.sh
│ │─ Dockerfile
│ │─ elasticsearch-7.3.2-amd64.deb
│ └─ OpenJDK11U-jdk_x64_linux_hotspot_11.0.4_11.tar.gz
├─ fess/
│ │─ Dockerfile
│ │─ fess-13.3.1.deb
│ └─ OpenJDK11U-jdk_x64_linux_hotspot_11.0.4_11.tar.gz
├─ docker-compose.yaml
fess_pluginsは、fessをインストールしたパッケージディレクトリの/usr/share/fess/es/pluginsをコピーしています。
docker-entorypoint.shは、elasticsearch:7.3.2からパチって来たものになります。
version: '3.7'
services:
fess:
container_name: fess_fess
build: ./fess/
image: fess:13.3.1
restart: always
ports:
- 8080:8080
environment:
- ES_HTTP_URL=http://elasticsearch:9200
- ES_TRANSPORT_URL=elasticsearch:9300
- FESS_DICTIONARY_PATH=/etc/elasticsearch/
- FESS_CONF_PATH=/etc/fess/
links:
- elasticsearch
depends_on:
- elasticsearch
elasticsearch:
container_name: fess_elasticsearch
build: ./elasticsearch/
image: elasticsearch:7.3.2
restart: always
volumes:
- esdata01:/usr/share/elasticsearch/data
ports:
- 9200:9200
- 9300:9300
volumes:
esdata01:
driver: local
FROM ubuntu:latest
ENV DEBIAN_FRONTEND=noninteractive \
PATH=$PATH:/usr/local/java/bin \
JAVA_HOME=/usr/local/java \
ES_HOME=/usr/share/elasticsearch \
ES_VERSION=7.3.2
# setup TIME_ZONE
RUN ln -sf /usr/share/zoneinfo/Japan /etc/localtime
# update system and install required software packages
RUN apt-get -y update
RUN apt-get -y install apt-transport-https
RUN apt-get -y autoremove && \
apt-get -y clean
# install openjdk-12
COPY ./OpenJDK11U-jdk_x64_linux_hotspot_11.0.4_11.tar.gz /usr/local/src/
RUN cd /usr/local && \
tar zxvf src/OpenJDK11U-jdk_x64_linux_hotspot_11.0.4_11.tar.gz && \
rm -rf jdk-11.0.4+11/demo && \
ln -s jdk-11.0.4+11 java
# set PATH and JAVA_HOME
RUN echo "export PATH=$PATH:/usr/local/java/bin" > /etc/profile.d/00-java.sh && \
echo "export JAVA_HOME=/usr/local/java" >> /etc/profile.d/00-java.sh
# install elasticsearch
COPY ./elasticsearch-${ES_VERSION}-amd64.deb /usr/local/src/elasticsearch-${ES_VERSION}-amd64.deb
RUN dpkg -i /usr/local/src/elasticsearch-${ES_VERSION}-amd64.deb
COPY ./docker-entrypoint.sh /usr/share/elasticsearch/bin/docker-entrypoint.sh
# install elasticsearch plugins
COPY ./fess_plugins/analysis-extension /usr/share/elasticsearch/plugins/analysis-extension
COPY ./fess_plugins/analysis-fess /usr/share/elasticsearch/plugins/analysis-fess
COPY ./fess_plugins/configsync /usr/share/elasticsearch/plugins/configsync
COPY ./fess_plugins/dataformat /usr/share/elasticsearch/plugins/dataformat
COPY ./fess_plugins/minhash /usr/share/elasticsearch/plugins/minhash
EXPOSE 9200 9300
# elasticsearch settings
RUN sed -i -e "s/^#network\.host.*/network\.host: elasticsearch/g" /etc/elasticsearch/elasticsearch.yml && \
sed -i -e "s/^#http\.port.*/http\.port: 9200/g" /etc/elasticsearch/elasticsearch.yml
RUN echo "configsync.config_path: /var/lib/elasticsearch/config" >> /etc/elasticsearch/elasticsearch.yml
USER elasticsearch
WORKDIR ${ES_HOME}
#RUN elasticsearch
ENV discovery.type=single-node
CMD ["./bin/docker-entrypoint.sh"]
FROM ubuntu:latest
ENV DEBIAN_FRONTEND=noninteractive \
PATH=$PATH:/usr/local/java/bin \
JAVA_HOME=/usr/local/java \
FESS_HOME=/usr/share/fess \
FESS_CONF_PATH=/etc/fess \
FESS_CLASSPATH=${FESS_HOME}/lib \
fess.log.path=/var/log/fess
# setup TIME_ZONE
RUN ln -sf /usr/share/zoneinfo/Japan /etc/localtime
# update system and install required software packages
RUN apt-get -y update
RUN apt-get -y autoremove && \
apt-get -y clean
# install openjdk-12
COPY ./OpenJDK11U-jdk_x64_linux_hotspot_11.0.4_11.tar.gz /usr/local/src/
RUN cd /usr/local && \
tar zxvf src/OpenJDK11U-jdk_x64_linux_hotspot_11.0.4_11.tar.gz && \
rm -rf jdk-11.0.4+11/demo && \
ln -s jdk-11.0.4+11 java
# set PATH and JAVA_HOME
RUN echo "export PATH=$PATH:/usr/local/java/bin" > /etc/profile.d/00-java.sh && \
echo "export JAVA_HOME=/usr/local/java" >> /etc/profile.d/00-java.sh
# install Fess
COPY ./fess-13.3.1.deb /usr/local/src/fess-13.3.1.deb
RUN dpkg -i /usr/local/src/fess-13.3.1.deb
# configure
RUN sed -i -e "s/localhost:9201/elasticsearch:9200/" ${FESS_CONF_PATH}/fess_config.properties && \
sed -i -e "s/#tomcat.bindAddress=127\.0\.0\.1/tomcat.bindAddress=fess/g" ${FESS_CONF_PATH}/tomcat_config.properties && \
sed -i -e "s/^#ES_HTTP_URL=http:\/\/localhost:9200/ES_HTTP_URL=http:\/\/elasticsearch:9200/g" ${FESS_HOME}/bin/fess.in.sh && \
sed -i -e "s/^#FESS_DICTIONARY_PATH=\/var\/lib\/elasticsearch\/config\//FESS_DICTIONARY_PATH=\/var\/lib\/elasticsearch\/config\//g" ${FESS_HOME}/bin/fess.in.sh
EXPOSE 8080
RUN mkdir /usr/share/fess/logs && \
chmod go+w /usr/share/fess/logs
WORKDIR ${FESS_HOME}
CMD [ "./bin/fess" ]
#!/bin/bash
set -e
# Files created by Elasticsearch should always be group writable too
umask 0002
run_as_other_user_if_needed() {
if [[ "$(id -u)" == "0" ]]; then
# If running as root, drop to specified UID and run command
exec chroot --userspec=1000 / "${@}"
else
# Either we are running in Openshift with random uid and are a member of the root group
# or with a custom --user
exec "${@}"
fi
}
# Allow user specify custom CMD, maybe bin/elasticsearch itself
# for example to directly specify `-E` style parameters for elasticsearch on k8s
# or simply to run /bin/bash to check the image
if [[ "$1" != "eswrapper" ]]; then
if [[ "$(id -u)" == "0" && $(basename "$1") == "elasticsearch" ]]; then
# centos:7 chroot doesn't have the `--skip-chdir` option and
# changes our CWD.
# Rewrite CMD args to replace $1 with `elasticsearch` explicitly,
# so that we are backwards compatible with the docs
# from the previous Elasticsearch versions<6
# and configuration option D:
# https://www.elastic.co/guide/en/elasticsearch/reference/5.6/docker.html#_d_override_the_image_8217_s_default_ulink_url_https_docs_docker_com_engine_reference_run_cmd_default_command_or_options_cmd_ulink
# Without this, user could specify `elasticsearch -E x.y=z` but
# `bin/elasticsearch -E x.y=z` would not work.
set -- "elasticsearch" "${@:2}"
# Use chroot to switch to UID 1000
exec chroot --userspec=1000 / "$@"
else
# User probably wants to run something else, like /bin/bash, with another uid forced (Openshift?)
exec "$@"
fi
fi
# Parse Docker env vars to customize Elasticsearch
#
# e.g. Setting the env var cluster.name=testcluster
#
# will cause Elasticsearch to be invoked with -Ecluster.name=testcluster
#
# see https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html#_setting_default_settings
declare -a es_opts
while IFS='=' read -r envvar_key envvar_value
do
# Elasticsearch settings need to have at least two dot separated lowercase
# words, e.g. `cluster.name`, except for `processors` which we handle
# specially
if [[ "$envvar_key" =~ ^[a-z0-9_]+\.[a-z0-9_]+ || "$envvar_key" == "processors" ]]; then
if [[ ! -z $envvar_value ]]; then
es_opt="-E${envvar_key}=${envvar_value}"
es_opts+=("${es_opt}")
fi
fi
done < <(env)
# The virtual file /proc/self/cgroup should list the current cgroup
# membership. For each hierarchy, you can follow the cgroup path from
# this file to the cgroup filesystem (usually /sys/fs/cgroup/) and
# introspect the statistics for the cgroup for the given
# hierarchy. Alas, Docker breaks this by mounting the container
# statistics at the root while leaving the cgroup paths as the actual
# paths. Therefore, Elasticsearch provides a mechanism to override
# reading the cgroup path from /proc/self/cgroup and instead uses the
# cgroup path defined the JVM system property
# es.cgroups.hierarchy.override. Therefore, we set this value here so
# that cgroup statistics are available for the container this process
# will run in.
export ES_JAVA_OPTS="-Des.cgroups.hierarchy.override=/ $ES_JAVA_OPTS"
if [[ -f bin/elasticsearch-users ]]; then
# Check for the ELASTIC_PASSWORD environment variable to set the
# bootstrap password for Security.
#
# This is only required for the first node in a cluster with Security
# enabled, but we have no way of knowing which node we are yet. We'll just
# honor the variable if it's present.
if [[ -n "$ELASTIC_PASSWORD" ]]; then
[[ -f /usr/share/elasticsearch/config/elasticsearch.keystore ]] || (run_as_other_user_if_needed elasticsearch-keystore create)
if ! (run_as_other_user_if_needed elasticsearch-keystore list | grep -q '^bootstrap.password$'); then
(run_as_other_user_if_needed echo "$ELASTIC_PASSWORD" | elasticsearch-keystore add -x 'bootstrap.password')
fi
fi
fi
if [[ "$(id -u)" == "0" ]]; then
# If requested and running as root, mutate the ownership of bind-mounts
if [[ -n "$TAKE_FILE_OWNERSHIP" ]]; then
chown -R 1000:0 /usr/share/elasticsearch/{data,logs}
fi
fi
run_as_other_user_if_needed /usr/share/elasticsearch/bin/elasticsearch "${es_opts[@]}"
:
elasticsearch.version=7.3.2
java.version=1.11
第一个困扰
错误内容:java.lang.NoClassDefFoundError: com/google/common/hash/HashFunction
- elasticsearchにfessのプラグインをインストールする際にエラーが発生。よって依存するfessが動作しない。com/google/common/hash/HashFunctionがUnDefinedだって言われている。因みにfessのPluginsをインストール(COPY)しなければelasticsearchは起動する。
fess_elasticsearch | [2019-09-23T11:25:03,575][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [f5d6d263c256] fatal error in thread [elasticsearch[f5d6d263c256][masterService#updateTask][T#1]], exiting
fess_elasticsearch | java.lang.NoClassDefFoundError: com/google/common/hash/HashFunction
fess_elasticsearch | at org.codelibs.minhash.MinHash.createHashFunctions(MinHash.java:107) ~[?:?]
fess_elasticsearch | at org.codelibs.elasticsearch.minhash.index.analysis.MinHashTokenFilterFactory.<init>(MinHashTokenFilterFactory.java:26) ~[?:?]
fess_elasticsearch | at org.elasticsearch.index.analysis.AnalysisRegistry.buildMapping(AnalysisRegistry.java:447) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.index.analysis.AnalysisRegistry.buildTokenFilterFactories(AnalysisRegistry.java:282) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.index.analysis.AnalysisRegistry.build(AnalysisRegistry.java:213) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.index.IndexService.<init>(IndexService.java:180) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.index.IndexModule.newIndexService(IndexModule.java:411) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.indices.IndicesService.createIndexService(IndicesService.java:563) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.indices.IndicesService.createIndex(IndicesService.java:512) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.cluster.metadata.MetaDataIndexTemplateService.validateAndAddTemplate(MetaDataIndexTemplateService.java:235) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.cluster.metadata.MetaDataIndexTemplateService.access$300(MetaDataIndexTemplateService.java:65)
~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.cluster.metadata.MetaDataIndexTemplateService$2.execute(MetaDataIndexTemplateService.java:176)
~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.cluster.ClusterStateUpdateTask.execute(ClusterStateUpdateTask.java:47) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.cluster.service.MasterService.executeTasks(MasterService.java:687) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.cluster.service.MasterService.calculateTaskOutputs(MasterService.java:310) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.cluster.service.MasterService.runTasks(MasterService.java:210) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.cluster.service.MasterService$Batcher.run(MasterService.java:142) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.cluster.service.TaskBatcher.runIfNotProcessed(TaskBatcher.java:150) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.cluster.service.TaskBatcher$BatchedTask.run(TaskBatcher.java:188) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:688) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.runAndClean(PrioritizedEsThreadPoolExecutor.java:252) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.common.util.concurrent.PrioritizedEsThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedEsThreadPoolExecutor.java:215) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
fess_elasticsearch | at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
fess_elasticsearch | at java.lang.Thread.run(Thread.java:834) [?:?]
fess_elasticsearch | Caused by: java.lang.ClassNotFoundException: com.google.common.hash.HashFunction
fess_elasticsearch | at java.net.URLClassLoader.findClass(URLClassLoader.java:471) ~[?:?]
fess_elasticsearch | at java.lang.ClassLoader.loadClass(ClassLoader.java:588) ~[?:?]
fess_elasticsearch | at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:899) ~[?:?]
fess_elasticsearch | at java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[?:?]
fess_elasticsearch | ... 25 more
错误避免:java.lang.NoClassDefFoundError: com/google/common/hash/HashFunction
听说你在使用minhash.jar时遇到了com/google/common/hash/HashFunction不存在的问题,所以我来告诉你如何获取它(笑)。你可以从https://github.com/google/guava/wiki/Release23下载Guava的jar文件。或者,你也可以通过访问http://search.maven.org/remotecontent?filepath=com/google/guava/guava/23.0/guava-23.0.jar来下载该jar文件。
暂时将这个放入fess_plugins/minhash文件夹中的minhash.jar。
困惑场景#2
尽管上述的minhash错误已经消失,但接下来出现了新问题。
错误内容:java.lang.Exception: java.lang.NoClassDefFoundError: org/apache/commons/codec/binary/Base64
这次ConfigSyncService里没有org.apache.commons.codec.binary.Base64了…
fess_elasticsearch | [2019-09-23T12:31:02,223][INFO ][o.c.e.c.s.ConfigSyncService] [caa90b0e6f11] ConfigFileUpdater is started at 1m intervals.
fess_elasticsearch | [2019-09-23T12:31:02,632][ERROR][o.e.ExceptionsHelper ] [caa90b0e6f11] fatal error
fess_elasticsearch | at org.elasticsearch.ExceptionsHelper.lambda$maybeDieOnAnotherThread$4(ExceptionsHelper.java:300)
fess_elasticsearch | at java.base/java.util.Optional.ifPresent(Optional.java:183)
fess_elasticsearch | at org.elasticsearch.ExceptionsHelper.maybeDieOnAnotherThread(ExceptionsHelper.java:290)
fess_elasticsearch | at org.elasticsearch.http.netty4.Netty4HttpRequestHandler.exceptionCaught(Netty4HttpRequestHandler.java:76)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:297)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.notifyHandlerException(AbstractChannelHandlerContext.java:831)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:376)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
fess_elasticsearch | at org.elasticsearch.http.netty4.Netty4HttpPipeliningHandler.channelRead(Netty4HttpPipeliningHandler.java:58)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
fess_elasticsearch | at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
fess_elasticsearch | at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
fess_elasticsearch | at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
fess_elasticsearch | at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
fess_elasticsearch | at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:323)
fess_elasticsearch | at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:297)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
fess_elasticsearch | at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:287)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
fess_elasticsearch | at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1408)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
fess_elasticsearch | at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930)
fess_elasticsearch | at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
fess_elasticsearch | at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:682)
fess_elasticsearch | at io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:582)
fess_elasticsearch | at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:536)
fess_elasticsearch | at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496)
fess_elasticsearch | at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:906)
fess_elasticsearch | at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
fess_elasticsearch | at java.base/java.lang.Thread.run(Thread.java:834)
fess_elasticsearch | [2019-09-23T12:31:02,701][WARN ][o.e.h.AbstractHttpServerTransport] [caa90b0e6f11] caught exception while handling client http traffic, closing connection Netty4HttpChannel{localAddress=/172.22.0.3:9200, remoteAddress=/172.22.0.2:43508}
fess_elasticsearch | java.lang.Exception: java.lang.NoClassDefFoundError: org/apache/commons/codec/binary/Base64
fess_elasticsearch | at org.elasticsearch.http.netty4.Netty4HttpRequestHandler.exceptionCaught(Netty4HttpRequestHandler.java:79) [transport-netty4-client-7.3.2.jar:7.3.2]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:297) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.notifyHandlerException(AbstractChannelHandlerContext.java:831) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:376) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at org.elasticsearch.http.netty4.Netty4HttpPipeliningHandler.channelRead(Netty4HttpPipeliningHandler.java:58) [transport-netty4-client-7.3.2.jar:7.3.2]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102) [netty-codec-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [netty-codec-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102) [netty-codec-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102) [netty-codec-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:323) [netty-codec-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:297) [netty-codec-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:287) [netty-handler-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1408) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:682) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:582) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:536) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496) [netty-transport-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:906) [netty-common-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-common-4.1.36.Final.jar:4.1.36.Final]
fess_elasticsearch | at java.lang.Thread.run(Thread.java:834) [?:?]
fess_elasticsearch | Caused by: java.lang.NoClassDefFoundError: org/apache/commons/codec/binary/Base64
fess_elasticsearch | at org.codelibs.elasticsearch.configsync.service.ConfigSyncService.getId(ConfigSyncService.java:353) ~[?:?]
fess_elasticsearch | at org.codelibs.elasticsearch.configsync.service.ConfigSyncService.lambda$store$13(ConfigSyncService.java:313) ~[?:?]
fess_elasticsearch | at org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:62) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.codelibs.elasticsearch.configsync.service.ConfigSyncService.lambda$checkIfIndexExists$9(ConfigSyncService.java:261) ~[?:?]
fess_elasticsearch | at org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:62) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.TransportAction$1.onResponse(TransportAction.java:68) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.TransportAction$1.onResponse(TransportAction.java:64) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.ActionListener$2.onResponse(ActionListener.java:88) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.admin.indices.exists.indices.TransportIndicesExistsAction.masterOperation(TransportIndicesExistsAction.java:80) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.admin.indices.exists.indices.TransportIndicesExistsAction.masterOperation(TransportIndicesExistsAction.java:39) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.master.TransportMasterNodeAction.masterOperation(TransportMasterNodeAction.java:127) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.master.TransportMasterNodeAction$AsyncSingleAction$1.doRun(TransportMasterNodeAction.java:200) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.common.util.concurrent.EsExecutors$DirectExecutorService.execute(EsExecutors.java:193) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.master.TransportMasterNodeAction$AsyncSingleAction.doStart(TransportMasterNodeAction.java:197) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.master.TransportMasterNodeAction$AsyncSingleAction.start(TransportMasterNodeAction.java:161) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.master.TransportMasterNodeAction.doExecute(TransportMasterNodeAction.java:138) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.master.TransportMasterNodeAction.doExecute(TransportMasterNodeAction.java:58) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:145) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.xpack.security.action.filter.SecurityActionFilter.apply(SecurityActionFilter.java:123) ~[?:?]
fess_elasticsearch | at org.elasticsearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:143) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:121) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:64) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.client.node.NodeClient.executeLocally(NodeClient.java:83) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.client.node.NodeClient.doExecute(NodeClient.java:72) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:392) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.client.support.AbstractClient$IndicesAdmin.execute(AbstractClient.java:1212) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:70) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.codelibs.elasticsearch.configsync.service.ConfigSyncService.checkIfIndexExists(ConfigSyncService.java:256) ~[?:?]
fess_elasticsearch | at org.codelibs.elasticsearch.configsync.service.ConfigSyncService.store(ConfigSyncService.java:311) ~[?:?]
fess_elasticsearch | at org.codelibs.elasticsearch.configsync.rest.RestConfigSyncFileAction.lambda$prepareRequest$8(RestConfigSyncFileAction.java:102) ~[?:?]
fess_elasticsearch | at org.elasticsearch.rest.BaseRestHandler.handleRequest(BaseRestHandler.java:113) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.xpack.security.rest.SecurityRestFilter.handleRequest(SecurityRestFilter.java:69) ~[?:?]
fess_elasticsearch | at org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:240) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.rest.RestController.tryAllHandlers(RestController.java:344) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:174) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.http.AbstractHttpServerTransport.dispatchRequest(AbstractHttpServerTransport.java:320) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.http.AbstractHttpServerTransport.handleIncomingRequest(AbstractHttpServerTransport.java:370) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.http.AbstractHttpServerTransport.incomingRequest(AbstractHttpServerTransport.java:299) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.http.netty4.Netty4HttpRequestHandler.channelRead0(Netty4HttpRequestHandler.java:66) ~[?:?]
fess_elasticsearch | at org.elasticsearch.http.netty4.Netty4HttpRequestHandler.channelRead0(Netty4HttpRequestHandler.java:31) ~[?:?]
fess_elasticsearch | at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) ~[?:?]
fess_elasticsearch | ... 40 more
fess_elasticsearch | Caused by: java.lang.ClassNotFoundException: org.apache.commons.codec.binary.Base64
fess_elasticsearch | at java.net.URLClassLoader.findClass(URLClassLoader.java:471) ~[?:?]
fess_elasticsearch | at java.lang.ClassLoader.loadClass(ClassLoader.java:588) ~[?:?]
fess_elasticsearch | at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:899) ~[?:?]
fess_elasticsearch | at java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[?:?]
fess_elasticsearch | at org.codelibs.elasticsearch.configsync.service.ConfigSyncService.getId(ConfigSyncService.java:353) ~[?:?]
fess_elasticsearch | at org.codelibs.elasticsearch.configsync.service.ConfigSyncService.lambda$store$13(ConfigSyncService.java:313) ~[?:?]
fess_elasticsearch | at org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:62) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.codelibs.elasticsearch.configsync.service.ConfigSyncService.lambda$checkIfIndexExists$9(ConfigSyncService.java:261) ~[?:?]
fess_elasticsearch | at org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:62) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.TransportAction$1.onResponse(TransportAction.java:68) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.TransportAction$1.onResponse(TransportAction.java:64) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.ActionListener$2.onResponse(ActionListener.java:88) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.admin.indices.exists.indices.TransportIndicesExistsAction.masterOperation(TransportIndicesExistsAction.java:80) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.admin.indices.exists.indices.TransportIndicesExistsAction.masterOperation(TransportIndicesExistsAction.java:39) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.master.TransportMasterNodeAction.masterOperation(TransportMasterNodeAction.java:127) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.master.TransportMasterNodeAction$AsyncSingleAction$1.doRun(TransportMasterNodeAction.java:200) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.common.util.concurrent.EsExecutors$DirectExecutorService.execute(EsExecutors.java:193) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.master.TransportMasterNodeAction$AsyncSingleAction.doStart(TransportMasterNodeAction.java:197) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.master.TransportMasterNodeAction$AsyncSingleAction.start(TransportMasterNodeAction.java:161) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.master.TransportMasterNodeAction.doExecute(TransportMasterNodeAction.java:138) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.master.TransportMasterNodeAction.doExecute(TransportMasterNodeAction.java:58) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:145) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.xpack.security.action.filter.SecurityActionFilter.apply(SecurityActionFilter.java:123) ~[?:?]
fess_elasticsearch | at org.elasticsearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:143) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:121) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:64) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.client.node.NodeClient.executeLocally(NodeClient.java:83) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.client.node.NodeClient.doExecute(NodeClient.java:72) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:392) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.client.support.AbstractClient$IndicesAdmin.execute(AbstractClient.java:1212) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:70) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.codelibs.elasticsearch.configsync.service.ConfigSyncService.checkIfIndexExists(ConfigSyncService.java:256) ~[?:?]
fess_elasticsearch | at org.codelibs.elasticsearch.configsync.service.ConfigSyncService.store(ConfigSyncService.java:311) ~[?:?]
fess_elasticsearch | at org.codelibs.elasticsearch.configsync.rest.RestConfigSyncFileAction.lambda$prepareRequest$8(RestConfigSyncFileAction.java:102) ~[?:?]
fess_elasticsearch | at org.elasticsearch.rest.BaseRestHandler.handleRequest(BaseRestHandler.java:113) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.xpack.security.rest.SecurityRestFilter.handleRequest(SecurityRestFilter.java:69) ~[?:?]
fess_elasticsearch | at org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:240) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.rest.RestController.tryAllHandlers(RestController.java:344) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:174) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.http.AbstractHttpServerTransport.dispatchRequest(AbstractHttpServerTransport.java:320) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.http.AbstractHttpServerTransport.handleIncomingRequest(AbstractHttpServerTransport.java:370) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.http.AbstractHttpServerTransport.incomingRequest(AbstractHttpServerTransport.java:299) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.http.netty4.Netty4HttpRequestHandler.channelRead0(Netty4HttpRequestHandler.java:66) ~[?:?]
fess_elasticsearch | at org.elasticsearch.http.netty4.Netty4HttpRequestHandler.channelRead0(Netty4HttpRequestHandler.java:31) ~[?:?]
fess_elasticsearch | at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) ~[?:?]
fess_elasticsearch | ... 40 more
fess_elasticsearch | [2019-09-23T12:31:02,684][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [caa90b0e6f11] fatal error in thread [Thread-3], exiting
fess_elasticsearch | java.lang.NoClassDefFoundError: org/apache/commons/codec/binary/Base64
fess_elasticsearch | at org.codelibs.elasticsearch.configsync.service.ConfigSyncService.getId(ConfigSyncService.java:353) ~[?:?]
fess_elasticsearch | at org.codelibs.elasticsearch.configsync.service.ConfigSyncService.lambda$store$13(ConfigSyncService.java:313) ~[?:?]
fess_elasticsearch | at org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:62) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.codelibs.elasticsearch.configsync.service.ConfigSyncService.lambda$checkIfIndexExists$9(ConfigSyncService.java:261) ~[?:?]
fess_elasticsearch | at org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:62) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.TransportAction$1.onResponse(TransportAction.java:68) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.TransportAction$1.onResponse(TransportAction.java:64) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.ActionListener$2.onResponse(ActionListener.java:88) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.admin.indices.exists.indices.TransportIndicesExistsAction.masterOperation(TransportIndicesExistsAction.java:80) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.admin.indices.exists.indices.TransportIndicesExistsAction.masterOperation(TransportIndicesExistsAction.java:39) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.master.TransportMasterNodeAction.masterOperation(TransportMasterNodeAction.java:127) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.master.TransportMasterNodeAction$AsyncSingleAction$1.doRun(TransportMasterNodeAction.java:200) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.common.util.concurrent.EsExecutors$DirectExecutorService.execute(EsExecutors.java:193) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.master.TransportMasterNodeAction$AsyncSingleAction.doStart(TransportMasterNodeAction.java:197) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.master.TransportMasterNodeAction$AsyncSingleAction.start(TransportMasterNodeAction.java:161) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.master.TransportMasterNodeAction.doExecute(TransportMasterNodeAction.java:138) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.master.TransportMasterNodeAction.doExecute(TransportMasterNodeAction.java:58) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:145) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.xpack.security.action.filter.SecurityActionFilter.apply(SecurityActionFilter.java:123) ~[?:?]
fess_elasticsearch | at org.elasticsearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:143) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:121) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:64) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.client.node.NodeClient.executeLocally(NodeClient.java:83) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.client.node.NodeClient.doExecute(NodeClient.java:72) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:392) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.client.support.AbstractClient$IndicesAdmin.execute(AbstractClient.java:1212) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:70) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.codelibs.elasticsearch.configsync.service.ConfigSyncService.checkIfIndexExists(ConfigSyncService.java:256) ~[?:?]
fess_elasticsearch | at org.codelibs.elasticsearch.configsync.service.ConfigSyncService.store(ConfigSyncService.java:311) ~[?:?]
fess_elasticsearch | at org.codelibs.elasticsearch.configsync.rest.RestConfigSyncFileAction.lambda$prepareRequest$8(RestConfigSyncFileAction.java:102) ~[?:?]
fess_elasticsearch | at org.elasticsearch.rest.BaseRestHandler.handleRequest(BaseRestHandler.java:113) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.xpack.security.rest.SecurityRestFilter.handleRequest(SecurityRestFilter.java:69) ~[?:?]
fess_elasticsearch | at org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:240) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.rest.RestController.tryAllHandlers(RestController.java:344) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:174) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.http.AbstractHttpServerTransport.dispatchRequest(AbstractHttpServerTransport.java:320) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.http.AbstractHttpServerTransport.handleIncomingRequest(AbstractHttpServerTransport.java:370) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.http.AbstractHttpServerTransport.incomingRequest(AbstractHttpServerTransport.java:299) ~[elasticsearch-7.3.2.jar:7.3.2]
fess_elasticsearch | at org.elasticsearch.http.netty4.Netty4HttpRequestHandler.channelRead0(Netty4HttpRequestHandler.java:66) ~[?:?]
fess_elasticsearch | at org.elasticsearch.http.netty4.Netty4HttpRequestHandler.channelRead0(Netty4HttpRequestHandler.java:31) ~[?:?]
fess_elasticsearch | at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) ~[?:?]
fess_elasticsearch | at org.elasticsearch.http.netty4.Netty4HttpPipeliningHandler.channelRead(Netty4HttpPipeliningHandler.java:58) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) ~[?:?]
fess_elasticsearch | at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102) ~[?:?]
fess_elasticsearch | at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) ~[?:?]
fess_elasticsearch | at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) ~[?:?]
fess_elasticsearch | at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) ~[?:?]
fess_elasticsearch | at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:323) ~[?:?]
fess_elasticsearch | at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:297) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) ~[?:?]
fess_elasticsearch | at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:287) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352) ~[?:?]
fess_elasticsearch | at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1408) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374) ~[?:?]
fess_elasticsearch | at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360) ~[?:?]
fess_elasticsearch | at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:930) ~[?:?]
fess_elasticsearch | at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) ~[?:?]
fess_elasticsearch | at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:682) ~[?:?]
fess_elasticsearch | at io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:582) ~[?:?]
fess_elasticsearch | at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:536) ~[?:?]
fess_elasticsearch | at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496) ~[?:?]
fess_elasticsearch | at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:906) ~[?:?]
fess_elasticsearch | at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[?:?]
fess_elasticsearch | at java.lang.Thread.run(Thread.java:834) [?:?]
fess_elasticsearch | Caused by: java.lang.ClassNotFoundException: org.apache.commons.codec.binary.Base64
fess_elasticsearch | at java.net.URLClassLoader.findClass(URLClassLoader.java:471) ~[?:?]
fess_elasticsearch | at java.lang.ClassLoader.loadClass(ClassLoader.java:588) ~[?:?]
fess_elasticsearch | at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:899) ~[?:?]
fess_elasticsearch | at java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[?:?]
fess_elasticsearch | ... 83 more
错误避免:java.lang.Exception: java.lang.NoClassDefFoundError: org/apache/commons/codec/binary/Base64
我又要买这个。
从Apache Commons Codec网站下载commons-codec-1.13-bin.tar.gz文件。解压缩后得到的commons-codec-1.13.jar文件放入fess_plugins/configsync目录中。
完成了!
2019年9月24日附加说明。
关于您给出的评论
正如shinsuke_sugayaさん指出的那样,fess附带的插件与官方插件不同。
由于我非常想要进行本地安装,所以我查找了URL并进行了下载。
-
- elasticsearch-analysis-extension-7.3.0.zip
-
- elasticsearch-analysis-fess-7.3.0.zip
-
- elasticsearch-configsync-7.3.0.zip
-
- elasticsearch-dataformat-7.3.0.zip
- elasticsearch-minhash-7.3.0.zip
但是,尽管我试着在本地解压缩了,但我还是遇到了包含了痛苦的依赖问题的jar文件。然而…安装过程并不顺利。
:
# install elasticsearch plugins
WORKDIR ${ES_HOME}
COPY ./plugins/elasticsearch-analysis-extension-7.3.0.zip /tmp/elasticsearch/plugins/
COPY ./plugins/elasticsearch-analysis-fess-7.3.0.zip /tmp/elasticsearch/plugins/
COPY ./plugins/elasticsearch-configsync-7.3.0.zip /tmp/elasticsearch/plugins/
COPY ./plugins/elasticsearch-dataformat-7.3.0.zip /tmp/elasticsearch/plugins/
COPY ./plugins/elasticsearch-minhash-7.3.0.zip /tmp/elasticsearch/plugins/
RUN ./bin/elasticsearch-plugin install file:///tmp/elasticsearch/elasticsearch-analysis-extension-7.3.0.zip
RUN ./bin/elasticsearch-plugin install file:///tmp/elasticsearch/plugins/elasticsearch-analysis-fess-7.3.0.zip
RUN ./bin/elasticsearch-plugin install file:///tmp/elasticsearch/plugins/elasticsearch-configsync-7.3.0.zip
RUN ./bin/elasticsearch-plugin install file:///tmp/elasticsearch/plugins/elasticsearch-dataformat-7.3.0.zip
RUN ./bin/elasticsearch-plugin install file:///tmp/elasticsearch/plugins/elasticsearch-minhash-7.3.0.zip
:
Step 18/29 : RUN /usr/share/elasticsearch/bin/elasticsearch-plugin install file:///tmp/elasticsearch/plugins/elasticsearch-analysis-extension-7.3.0.zip
---> Running in 63e4cc74e7e2
-> Downloading file:///tmp/elasticsearch/plugins/elasticsearch-analysis-extension-7.3.0.zip
[=================================================] 100%??
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: plugin requires additional permissions @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.lang.RuntimePermission accessDeclaredMembers
* java.lang.RuntimePermission getClassLoader
* java.lang.reflect.ReflectPermission suppressAccessChecks
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.
Exception in thread "main" java.lang.IllegalStateException: unable to read from standard input; is standard input open and a tty attached?
at org.elasticsearch.cli.Terminal$SystemTerminal.readText(Terminal.java:173)
at org.elasticsearch.plugins.PluginSecurity.prompt(PluginSecurity.java:74)
at org.elasticsearch.plugins.PluginSecurity.confirmPolicyExceptions(PluginSecurity.java:67)
at org.elasticsearch.plugins.InstallPluginCommand.installPlugin(InstallPluginCommand.java:811)
at org.elasticsearch.plugins.InstallPluginCommand.install(InstallPluginCommand.java:785)
at org.elasticsearch.plugins.InstallPluginCommand.execute(InstallPluginCommand.java:231)
at org.elasticsearch.plugins.InstallPluginCommand.execute(InstallPluginCommand.java:216)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
at org.elasticsearch.cli.MultiCommand.execute(MultiCommand.java:77)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
at org.elasticsearch.cli.Command.main(Command.java:90)
at org.elasticsearch.plugins.PluginCli.main(PluginCli.java:47)
ERROR: Service 'elasticsearch' failed to build: The command '/bin/sh -c /usr/share/elasticsearch/bin/elasticsearch-plugin install file:///tmp/elasticsearch/plugins/elasticsearch-analysis-extension-7.3.0.zip' returned a non-zero code: 1
但是,就像在处理fess_plugins时那样,直接复制似乎会导致启动。
顺便说一下,文件夹名称是根据解压缩生成的plugin-descriptor.properties的name来命名的。
在解压缩的同时,将elasticsearch.version=更改为7.3.2,将java.version=更改为1.11。
:
# install elasticsearch plugins
WORKDIR ${ES_HOME}
COPY ./plugins/analysis-extension ./plugins/analysis-extension
COPY ./plugins/analysis-fess ./plugins/analysis-fess
COPY ./plugins/configsync ./plugins/configsync
COPY ./plugins/dataformat ./plugins/dataformat
COPY ./plugins/minhash ./plugins/minhash
:
:
fess_elasticsearch | [2019-09-25T06:13:42,405][INFO ][o.e.p.PluginsService ] [14ead7802c88] loaded plugin [analysis-extension]
fess_elasticsearch | [2019-09-25T06:13:42,410][INFO ][o.e.p.PluginsService ] [14ead7802c88] loaded plugin [analysis-fess]
fess_elasticsearch | [2019-09-25T06:13:42,411][INFO ][o.e.p.PluginsService ] [14ead7802c88] loaded plugin [configsync]
fess_elasticsearch | [2019-09-25T06:13:42,412][INFO ][o.e.p.PluginsService ] [14ead7802c88] loaded plugin [dataformat]
fess_elasticsearch | [2019-09-25T06:13:42,414][INFO ][o.e.p.PluginsService ] [14ead7802c88] loaded plugin [minhash]:
今晚时间到了m(_ _)m