aparo / opensearch-analysis-ik

The IK Analysis plugin integrates Lucene IK analyzer into OpenSearch, support customized dictionary. Port of https://github.com/medcl/elasticsearch-analysis-ik
Apache License 2.0
40 stars 14 forks source link

IK Remote Dictionary not work #21

Open tiantiandas opened 1 year ago

tiantiandas commented 1 year ago

Version:

Issue:

IKAnalyzer.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
        <comment>IK Analyzer Configuration</comment>
        <entry key="remote_ext_dict">http://172.17.0.1:2232/extra_main.dic</entry> 
        <!-- <entry key="remote_ext_stopwords"></entry> -->
</properties>

Response from endpoint:

$ curl -I  http://172.17.0.1:2232/extra_main.dic
HTTP/1.1 200 OK     
Server: nginx/1.23.4
Date: Thu, 27 Apr 2023 09:58:21 GMT
Content-Type: application/octet-stream
Content-Length: 25862
Connection: keep-alive
Accept-Ranges: bytes
Content-Security-Policy: block-all-mixed-content
ETag: "a3e5b97ee2b0d6a2b73a4c92e303af83"
Last-Modified: Thu, 3 May 2023 08:10:54 GMT

Error log:

[2023-05-03T15:16:27,361][INFO ][o.o.c.s.ClusterApplierService] [os01] added {{os03}{kkGESRmlSMqCblO44dExKw}{SDDbXk9lS0mSWDxyCCEvAw}{172.28.0.3}{172.28.0.3:9300}{dimr}{shard_indexing_pressure_enabled=true}}, term: 26, version: 121, reason: ApplyCommitRequest{term=26, version=121, sourceNode={os02}{vkxPRIxARLm6GCj3Q45DNg}{Z1Q-sWS0R1iiXbPuoPPYmg}{172.28.0.5}{172.28.0.5:9300}{dimr}{shard_indexing_pressure_enabled=true}}
[2023-05-03T15:16:27,363][INFO ][o.o.a.u.d.DestinationMigrationCoordinator] [os01] Detected cluster change event for destination migration
[2023-05-03T15:16:27,633][INFO ][o.o.a.c.HashRing         ] [os01] Node added: [vkxPRIxARLm6GCj3Q45DNg, kkGESRmlSMqCblO44dExKw, KDSGG6ZiRqiDUCTY8tjGCQ]
[2023-05-03T15:16:27,643][INFO ][o.o.a.c.HashRing         ] [os01] Add data node to AD version hash ring: vkxPRIxARLm6GCj3Q45DNg
[2023-05-03T15:16:27,649][INFO ][o.o.a.c.HashRing         ] [os01] Add data node to AD version hash ring: KDSGG6ZiRqiDUCTY8tjGCQ
[2023-05-03T15:16:27,651][INFO ][o.o.a.c.HashRing         ] [os01] Rebuild AD hash ring for realtime AD with cooldown, nodeChangeEvents size 0
[2023-05-03T15:16:27,652][INFO ][o.o.a.c.ADClusterEventListener] [os01] Init AD version hash ring successfully
[2023-05-03T15:16:27,686][INFO ][o.o.o.i.ObservabilityTracesIndex] [os01] observability:createMappingTemplate sso_trace_template API called
[2023-05-03T15:16:28,103][INFO ][o.w.a.d.Dictionary       ] [os01] try load config from /usr/share/opensearch/config/analysis-ik/IKAnalyzer.cfg.xml
[2023-05-03T15:16:28,503][INFO ][o.w.a.d.Dictionary       ] [os01] [Dict Loading] http://172.17.0.1:2232/extra_main.dic
fatal error in thread [opensearch[os01][clusterApplierService#updateTask][T#1]], exiting
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
        at org.apache.http.conn.ssl.DefaultHostnameVerifier.<init>(DefaultHostnameVerifier.java:82)
        at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:966)
        at org.apache.http.impl.client.HttpClients.createDefault(HttpClients.java:56)
        at org.wltea.analyzer.dic.Dictionary.getRemoteWordsUnprivileged(Dictionary.java:443)
        at java.security.AccessController.doPrivileged(AccessController.java:318) ~[?:?]
        at org.wltea.analyzer.dic.Dictionary.lambda$getRemoteWords$0(Dictionary.java:431)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
        at org.wltea.analyzer.dic.Dictionary.getRemoteWords(Dictionary.java:430)
        at org.wltea.analyzer.dic.Dictionary.loadRemoteExtDict(Dictionary.java:411)
        at org.wltea.analyzer.dic.Dictionary.loadMainDict(Dictionary.java:385)
        at org.wltea.analyzer.dic.Dictionary.initial(Dictionary.java:149)
        at org.wltea.analyzer.cfg.Configuration.<init>(Configuration.java:37)
        at org.opensearch.index.analysis.IkTokenizerFactory.<init>(IkTokenizerFactory.java:15)
        at org.opensearch.index.analysis.IkTokenizerFactory.getIkSmartTokenizerFactory(IkTokenizerFactory.java:23)
        at org.opensearch.index.analysis.AnalysisRegistry.buildMapping(AnalysisRegistry.java:542)
        at org.opensearch.index.analysis.AnalysisRegistry.buildTokenizerFactories(AnalysisRegistry.java:350)
        at org.opensearch.indices.IndicesService.createIndexService(IndicesService.java:876) ~[opensearch-2.6.0.jar:2.6.0]
        at org.opensearch.indices.IndicesService.createIndex(IndicesService.java:760) ~[opensearch-2.6.0.jar:2.6.0]
        at org.opensearch.indices.IndicesService.createIndex(IndicesService.java:209) ~[opensearch-2.6.0.jar:2.6.0]
        at org.opensearch.indices.cluster.IndicesClusterStateService.createIndices(IndicesClusterStateService.java:539) ~[opensearch-2.6.0.jar:2.6.0]
        at org.opensearch.indices.cluster.IndicesClusterStateService.createIndices(IndicesClusterStateService.java:539)
        at org.opensearch.indices.cluster.IndicesClusterStateService.applyClusterState(IndicesClusterStateService.java:286)
        at org.opensearch.cluster.service.ClusterApplierService.callClusterStateAppliers(ClusterApplierService.java:606)
        at org.opensearch.cluster.service.ClusterApplierService.callClusterStateAppliers(ClusterApplierService.java:593)
        at org.opensearch.cluster.service.ClusterApplierService.applyChanges(ClusterApplierService.java:561)
        at org.opensearch.cluster.service.ClusterApplierService.runTask(ClusterApplierService.java:484)
        at org.opensearch.cluster.service.ClusterApplierService$UpdateTask.run(ClusterApplierService.java:186)
        at org.opensearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:747)
        at org.opensearch.common.util.concurrent.PrioritizedOpenSearchThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedOpenSearchThreadPoolExecutor.java:245) ~[opensearch-2.6.0.jar:2.6.0]
        at org.opensearch.common.util.concurrent.PrioritizedOpenSearchThreadPoolExecutor$TieBreakingPrioritizedRunnable.run(PrioritizedOpenSearchThreadPoolExecutor.java:245)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
        at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
        at java.net.URLClassLoader.findClass(URLClassLoader.java:445) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:587) ~[?:?]
        at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:872) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
        ... 33 more
        ... 33 more