opendistro-for-elasticsearch / k-NN

🆕 A machine learning plugin which supports an approximate k-NN search algorithm for Open Distro.
https://opendistro.github.io/
Apache License 2.0
277 stars 55 forks source link

tag/v1.13.0.0 has error #334

Closed jinsam-kim closed 3 years ago

jinsam-kim commented 3 years ago

tag/v1.13.0.0 has error

error messege

[2021-03-04T14:13:26,069][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [----] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentException: error loading whitelist(s) [knn_whitelist.txt]:[22]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:174) ~[elasticsearch-7.10.2.jar:7.10.2]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:161) ~[elasticsearch-7.10.2.jar:7.10.2]
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-7.10.2.jar:7.10.2]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:127) ~[elasticsearch-cli-7.10.2.jar:7.10.2]
    at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-7.10.2.jar:7.10.2]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126) ~[elasticsearch-7.10.2.jar:7.10.2]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-7.10.2.jar:7.10.2]
Caused by: java.lang.IllegalArgumentException: error loading whitelist(s) [knn_whitelist.txt]:[22]
    at org.elasticsearch.painless.lookup.PainlessLookupBuilder.buildFromWhitelists(PainlessLookupBuilder.java:181) ~[?:?]
    at org.elasticsearch.painless.PainlessScriptEngine.<init>(PainlessScriptEngine.java:102) ~[?:?]
    at org.elasticsearch.painless.PainlessPlugin.getScriptEngine(PainlessPlugin.java:115) ~[?:?]
    at org.elasticsearch.script.ScriptModule.<init>(ScriptModule.java:84) ~[elasticsearch-7.10.2.jar:7.10.2]
    at org.elasticsearch.node.Node.<init>(Node.java:394) ~[elasticsearch-7.10.2.jar:7.10.2]
    at org.elasticsearch.node.Node.<init>(Node.java:289) ~[elasticsearch-7.10.2.jar:7.10.2]
    at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:227) ~[elasticsearch-7.10.2.jar:7.10.2]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:227) ~[elasticsearch-7.10.2.jar:7.10.2]
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:393) ~[elasticsearch-7.10.2.jar:7.10.2]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170) ~[elasticsearch-7.10.2.jar:7.10.2]
    ... 6 more
Caused by: java.lang.IllegalArgumentException: imported method and class binding cannot have the same name [cosineSimilarity]
    at org.elasticsearch.painless.lookup.PainlessLookupBuilder.addImportedPainlessMethod(PainlessLookupBuilder.java:845) ~[?:?]
    at org.elasticsearch.painless.lookup.PainlessLookupBuilder.addImportedPainlessMethod(PainlessLookupBuilder.java:774) ~[?:?]
    at org.elasticsearch.painless.lookup.PainlessLookupBuilder.buildFromWhitelists(PainlessLookupBuilder.java:158) ~[?:?]
    at org.elasticsearch.painless.PainlessScriptEngine.<init>(PainlessScriptEngine.java:102) ~[?:?]
    at org.elasticsearch.painless.PainlessPlugin.getScriptEngine(PainlessPlugin.java:115) ~[?:?]
    at org.elasticsearch.script.ScriptModule.<init>(ScriptModule.java:84) ~[elasticsearch-7.10.2.jar:7.10.2]
    at org.elasticsearch.node.Node.<init>(Node.java:394) ~[elasticsearch-7.10.2.jar:7.10.2]
    at org.elasticsearch.node.Node.<init>(Node.java:289) ~[elasticsearch-7.10.2.jar:7.10.2]
    at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:227) ~[elasticsearch-7.10.2.jar:7.10.2]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:227) ~[elasticsearch-7.10.2.jar:7.10.2]
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:393) ~[elasticsearch-7.10.2.jar:7.10.2]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170) ~[elasticsearch-7.10.2.jar:7.10.2]
    ... 6 more
uncaught exception in thread [main]
java.lang.IllegalArgumentException: error loading whitelist(s) [knn_whitelist.txt]:[22]
Likely root cause: java.lang.IllegalArgumentException: imported method and class binding cannot have the same name [cosineSimilarity]
    at org.elasticsearch.painless.lookup.PainlessLookupBuilder.addImportedPainlessMethod(PainlessLookupBuilder.java:845)
    at org.elasticsearch.painless.lookup.PainlessLookupBuilder.addImportedPainlessMethod(PainlessLookupBuilder.java:774)
    at org.elasticsearch.painless.lookup.PainlessLookupBuilder.buildFromWhitelists(PainlessLookupBuilder.java:158)
    at org.elasticsearch.painless.PainlessScriptEngine.<init>(PainlessScriptEngine.java:102)
    at org.elasticsearch.painless.PainlessPlugin.getScriptEngine(PainlessPlugin.java:115)
    at org.elasticsearch.script.ScriptModule.<init>(ScriptModule.java:84)
    at org.elasticsearch.node.Node.<init>(Node.java:394)
    at org.elasticsearch.node.Node.<init>(Node.java:289)
    at org.elasticsearch.bootstrap.Bootstrap$5.<init>(Bootstrap.java:227)
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:227)
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:393)
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170)
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:161)
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:127)
    at org.elasticsearch.cli.Command.main(Command.java:90)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126)
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)
jmazanec15 commented 3 years ago

Hello @jinsam-kim, could you describe what ES distribution you are using? Does the cluster have any extra features?

jinsam-kim commented 3 years ago

@jmazanec15 I used pure ES 7.10.2 version. downloaed using this url. 'https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.10.2-linux-x86_64.tar.gz'

I am using tag/v1.12.0.0 now. It was totally the same that install process. So, I guess "tag/1.13.0.0" has error.

jmazanec15 commented 3 years ago

@jinsam-kim Thanks. I see from https://www.elastic.co/guide/en/elasticsearch/reference/7.10/targz.html that that artifact may contain some commercial features which conflict with the k-NN plugin's features.

If you would like to use the k-NN plugin for ODFE 1.13.0.0, I would recommend installing the ODFE 1.13 tarball.

flecno commented 3 years ago

I have the same problem with the plugin upgrade to v1.13.0.0. The new version adds some painless scripting API that conflicts with the vectors module from elastic. Its not so nice that functions are not somehow namespaced. I will try to run without the vectors module by removing it manually. Hopefully that is not required for me. Is ODFE compatible with ECK (elastic on k8s)?

jmazanec15 commented 3 years ago

@flecno removing the module might work, but we do not guarantee compatibility with ECK.