弹性搜索错误

时间:2015-06-15 03:47:06

标签: maven elasticsearch

我打算修复Elastic Search开源项目的错误。我把它分叉并克隆了分叉副本。然后我在Eclipse上将其作为Maven项目导入,然后构建了Maven。到现在为止还挺好。 我打开了ElasticSearchF.java文件并尝试将其作为Java应用程序运行。(这是按照http://www.lindstromhenrik.com/debugging-elasticsearch-in-eclipse/中的说明进行的。)

但是我收到一条错误,说没有为ElasticSearch设置path.home并抛出错误说明IllegalStateException。

我的问题是

  1. 为什么会出现这个错误。
  2. 正如我所说,我想修复ElasticSearch项目中的错误。这是为我的目标设置环境的正确方法吗?或者我应该让客户端将请求发送到ElasticSearch服务器,然后在Elastic Search源代码中设置调试点。如何实现这个目标?
  3. 感谢您的耐心等待。

    更新: 我确实添加了其中一个回答者提到的VM参数。

    然后它抛出了不同的错误,并且不知道为什么抛出它。

    java.io.IOException: Resource not found: "org/joda/time/tz/data/ZoneInfoMap" ClassLoader: sun.misc.Launcher$AppClassLoader@29578426
        at org.joda.time.tz.ZoneInfoProvider.openResource(ZoneInfoProvider.java:210)
        at org.joda.time.tz.ZoneInfoProvider.<init>(ZoneInfoProvider.java:127)
        at org.joda.time.tz.ZoneInfoProvider.<init>(ZoneInfoProvider.java:86)
        at org.joda.time.DateTimeZone.getDefaultProvider(DateTimeZone.java:514)
        at org.joda.time.DateTimeZone.getProvider(DateTimeZone.java:413)
        at org.joda.time.DateTimeZone.forID(DateTimeZone.java:216)
        at org.joda.time.DateTimeZone.getDefault(DateTimeZone.java:151)
        at org.joda.time.chrono.ISOChronology.getInstance(ISOChronology.java:79)
        at org.joda.time.DateTimeUtils.getChronology(DateTimeUtils.java:266)
        at org.joda.time.format.DateTimeFormatter.selectChronology(DateTimeFormatter.java:968)
        at org.joda.time.format.DateTimeFormatter.printTo(DateTimeFormatter.java:672)
        at org.joda.time.format.DateTimeFormatter.printTo(DateTimeFormatter.java:560)
        at org.joda.time.format.DateTimeFormatter.print(DateTimeFormatter.java:644)
        at org.elasticsearch.Build.<clinit>(Build.java:53)
        at org.elasticsearch.node.Node.<init>(Node.java:138)
        at org.elasticsearch.node.NodeBuilder.build(NodeBuilder.java:157)
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:177)
        at org.elasticsearch.bootstrap.Bootstrap.main(Bootstrap.java:278)
        at org.elasticsearch.bootstrap.ElasticsearchF.main(ElasticsearchF.java:30)
    [2015-06-16 18:51:36,892][INFO ][node                     ] [Kismet Deadly] version[2.0.0-SNAPSHOT], pid[2516], build[9b833fd/2015-06-15T03:38:40Z]
    [2015-06-16 18:51:36,892][INFO ][node                     ] [Kismet Deadly] initializing ...
    [2015-06-16 18:51:36,899][INFO ][plugins                  ] [Kismet Deadly] loaded [], sites []
    {2.0.0-SNAPSHOT}: Initialization Failed ...
    - ExceptionInInitializerError
        IllegalArgumentException[An SPI class of type org.apache.lucene.codecs.PostingsFormat with name 'Lucene50' does not exist.  You need to add the corresponding JAR file supporting this SPI to your classpath.  The current classpath supports the following names: [es090, completion090, XBloomFilter]]
    

2 个答案:

答案 0 :(得分:3)

我在https://github.com/elastic/elasticsearch/issues/12737获得了开发者社区的帮助,并且能够对其进行调试。

简而言之,程序将是:

1)在包org.elasticsearch.bootstrap中搜索文件Elasticsearch.java/ElasticsearchF.java。

2)右键单击 - &gt;运行配置...

3)在弹出的窗口中,单击&#34; Arguments&#34;选项卡和&#34;程序参数:&#34; section将值作为start 并在&#34; VM参数下:&#34;部分给出的值为
-Des.path.home = {弹性搜索代码库根文件夹的路径} / core -Des.security.manager.enabled = false

4)点击&#34; Apply&#34;然后单击&#34;运行&#34;。

它现在运行。 检查,转到localhost:9200,您将收到类似

的消息
 {
  "name" : "Raza",
  "cluster_name" : "elasticsearch",
  "version" : {
    "number" : "2.0.0-beta1",
    "build_hash" : "${buildNumber}",
    "build_timestamp" : "NA",
    "build_snapshot" : true,
    "lucene_version" : "5.2.1"
  },
  "tagline" : "You Know, for Search"
}

了解有关参数的更多信息 见:https://github.com/elastic/elasticsearch/commit/2b9ef26006c0e4608110164480b8127dffb9d6ad

答案 1 :(得分:0)

编辑调试/运行配置,将其放在vm参数:

-Des.path.home = C:\ github上\ elasticsearch \

将C:\ github \ elasticsearch \更改为弹性搜索根路径

原因是当你在eclipse中调试/运行时,missingsearch.bat中的一些参数被遗漏