2012-06-07 92 views
0

我试图获得概念Java代码工作的证明。我想要做的第一件事是在HD上索引一些txt文档。但是,在尝试创建节点时遇到异常之前,我甚至没有那么做。弹性搜索 - 在java中创建节点/索引时出错

下面的代码都产生下面的异常:

代码

Node node = nodeBuilder().node(); 
Client client = node.client(); 

我的主要问题是

我在哪里可以买到,这似乎是缺少BoundaryScanner类?我会在异常下面提供我的maven pom.xml。 lucene-fast-vector-highlighter包似乎是最新版本3.0.3

任何帮助非常感谢。

异常

07-Jun-2012 12:44:00 org.elasticsearch.node 
INFO: [Allatou] {0.19.4}[2648]: initializing ... 
07-Jun-2012 12:44:00 org.elasticsearch.plugins 
INFO: [Allatou] loaded [], sites [] 
Exception in thread "main" org.elasticsearch.common.collect.ComputationException: java.lang.NoClassDefFoundError: org/apache/lucene/search/vectorhighlight/BoundaryScanner 
    at org.elasticsearch.common.collect.ComputingConcurrentHashMap$ComputingMapAdapter.get(ComputingConcurrentHashMap.java:400) 
    at org.elasticsearch.common.inject.internal.FailableCache.get(FailableCache.java:49) 
    at org.elasticsearch.common.inject.ConstructorInjectorStore.get(ConstructorInjectorStore.java:50) 
    at org.elasticsearch.common.inject.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:50) 
    at org.elasticsearch.common.inject.InjectorImpl.initializeBinding(InjectorImpl.java:370) 
    at org.elasticsearch.common.inject.BindingProcessor$1$1.run(BindingProcessor.java:148) 
    at org.elasticsearch.common.inject.BindingProcessor.initializeBindings(BindingProcessor.java:204) 
    at org.elasticsearch.common.inject.InjectorBuilder.initializeStatically(InjectorBuilder.java:119) 
    at org.elasticsearch.common.inject.InjectorBuilder.build(InjectorBuilder.java:102) 
    at org.elasticsearch.common.inject.Guice.createInjector(Guice.java:93) 
    at org.elasticsearch.common.inject.Guice.createInjector(Guice.java:70) 
    at org.elasticsearch.common.inject.ModulesBuilder.createInjector(ModulesBuilder.java:59) 
    at org.elasticsearch.node.internal.InternalNode.<init>(InternalNode.java:149) 
    at org.elasticsearch.node.NodeBuilder.build(NodeBuilder.java:159) 
    at org.elasticsearch.node.NodeBuilder.node(NodeBuilder.java:166) 
    at ie.openmobile.elasticsearch.Main.main(Main.java:49) 
Caused by: java.lang.NoClassDefFoundError: org/apache/lucene/search/vectorhighlight/BoundaryScanner 
    at java.lang.Class.getDeclaredConstructors0(Native Method) 
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source) 
    at java.lang.Class.getDeclaredConstructors(Unknown Source) 
    at org.elasticsearch.common.inject.spi.InjectionPoint.forConstructorOf(InjectionPoint.java:177) 
    at org.elasticsearch.common.inject.ConstructorInjectorStore.createConstructor(ConstructorInjectorStore.java:59) 
    at org.elasticsearch.common.inject.ConstructorInjectorStore.access$000(ConstructorInjectorStore.java:29) 
    at org.elasticsearch.common.inject.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:37) 
    at org.elasticsearch.common.inject.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:33) 
    at org.elasticsearch.common.inject.internal.FailableCache$1.apply(FailableCache.java:38) 
    at org.elasticsearch.common.collect.ComputingConcurrentHashMap$ComputingValueReference.compute(ComputingConcurrentHashMap.java:358) 
    at org.elasticsearch.common.collect.ComputingConcurrentHashMap$ComputingSegment.compute(ComputingConcurrentHashMap.java:184) 
    at org.elasticsearch.common.collect.ComputingConcurrentHashMap$ComputingSegment.getOrCompute(ComputingConcurrentHashMap.java:153) 
    at org.elasticsearch.common.collect.ComputingConcurrentHashMap.getOrCompute(ComputingConcurrentHashMap.java:69) 
    at org.elasticsearch.common.collect.ComputingConcurrentHashMap$ComputingMapAdapter.get(ComputingConcurrentHashMap.java:396) 
    ... 15 more 
Caused by: java.lang.ClassNotFoundException: org.apache.lucene.search.vectorhighlight.BoundaryScanner 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 29 more 

的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
     <modelVersion>4.0.0</modelVersion> 

     <groupId>com.examplegroup</groupId> 
     <artifactId>artifacename</artifactId> 
     <version>1.0-SNAPSHOT</version> 
     <packaging>jar</packaging> 

     <name>elasticsearch</name> 
     <url>http://maven.apache.org</url> 


     <build> 
     <plugins> 
      <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.12</version> 
      <configuration> 
       <systemPropertyVariables> 
       <user.region>uk</user.region> 
       </systemPropertyVariables> 
      </configuration> 
      </plugin> 
     </plugins> 
     </build> 


     <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     </properties> 

     <repositories> 


     <repository> 
     <!-- elasticsearch hosted here --> 
      <id>sonatype-releases</id> 
      <name>Sonatype Releases Repository</name> 
      <url>http://oss.sonatype.org/content/repositories/releases/</url> 
     </repository> 

     </repositories> 


     <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
     <!-- jsoup HTML parser library @ http://jsoup.org/ --> 
      <groupId>org.jsoup</groupId> 
      <artifactId>jsoup</artifactId> 
      <version>1.6.3</version> 
     </dependency> 

      <dependency> 
      <groupId>org.apache.lucene</groupId> 
      <artifactId>lucene-core</artifactId> 
      <version>3.6.0</version> 
      </dependency>   

      <dependency>     
      <groupId>org.apache.lucene</groupId> 
      <artifactId>lucene-analyzers</artifactId> 
      <version>3.6.0</version>        
      </dependency>            

      <dependency>              
      <groupId>org.apache.lucene</groupId>          
      <artifactId>lucene-snowball</artifactId>           
      <version>3.0.3</version>                  
      </dependency>                       

      <dependency> 
      <groupId>org.apache.lucene</groupId> 
      <artifactId>lucene-fast-vector-highlighter</artifactId> 
      <version>3.0.3</version> 
      </dependency> 

      <dependency> 
      <groupId>org.apache.lucene</groupId> 
      <artifactId>lucene-highlighter</artifactId> 
      <version>2.4.0</version> 
      </dependency> 

      <dependency> 
      <groupId>org.apache.lucene</groupId> 
      <artifactId>lucene-queries</artifactId> 
      <version>2.4.0</version> 
      </dependency> 


      <dependency> 
      <groupId>org.elasticsearch</groupId> 
      <artifactId>elasticsearch</artifactId> 
      <version>0.19.4</version> 
      </dependency> 
     </dependencies> 



    </project> 

回答

3

这不是在同一个项目中混合使用不同版本的Lucene组件的一个好主意。你应该使用3.6.0的一切。最近的版本有一些变化,所以你需要替换/删除一些工件。例如,雪球分析仪现在是在Lucene中,分析仪,所以你不应该需要Lucene的雪球神器,而现在的Lucene快速矢量荧光笔在Lucene的-荧光笔:

 <dependency> 
     <groupId>org.apache.lucene</groupId> 
     <artifactId>lucene-core</artifactId> 
     <version>3.6.0</version> 
     </dependency>   

     <dependency>     
     <groupId>org.apache.lucene</groupId> 
     <artifactId>lucene-analyzers</artifactId> 
     <version>3.6.0</version>        
     </dependency>            

     <dependency> 
     <groupId>org.apache.lucene</groupId> 
     <artifactId>lucene-highlighter</artifactId> 
     <version>3.6.0</version> 
     </dependency> 

     <dependency> 
     <groupId>org.apache.lucene</groupId> 
     <artifactId>lucene-queries</artifactId> 
     <version>3.6.0</version> 
     </dependency> 
+0

感谢imotov。当你发布你的答案时,我只是写了同样的东西。特别是java.lang.NoClassDefFoundError引用了在问题中是2.4.0的lucene-highlighter包。当它(和其他一切)更新到3.6.0时,它运行良好。感谢您的时间和精力。哦,并感谢关于新工件的额外信息。 – feargal