2014-02-24 54 views
1

我下面这个来源:ElasticSearch - 无法读取请求数据

Elastic Search Example

和我创建了一段代码:

import static org.elasticsearch.node.NodeBuilder.nodeBuilder; 

import java.util.Date; 
import java.util.HashMap; 
import java.util.Map; 

import org.elasticsearch.client.Client; 
import org.elasticsearch.node.Node; 

public class ElasticSearchAPI { 

    public static void main(String[] args) { 

     Node node = nodeBuilder().clusterName("yourclustername").node(); 
     Client client = node.client(); 

     client.prepareIndex("kodcucom", "article", "1") 
       .setSource(
         putJsonDocument(
           "ElasticSearch: Java API", 
           "ElasticSearch provides the Java API, all operations " 
             + "can be executed asynchronously using a client object.", 
           new Date(), new String[] { "elasticsearch" }, 
           "Huseyin Akdogan")).execute().actionGet(); 

     node.close(); 
    } 

    public static Map<String, Object> putJsonDocument(String title, 
      String content, Date postDate, String[] tags, String author) { 

     Map<String, Object> jsonDocument = new HashMap<String, Object>(); 

     jsonDocument.put("title", title); 
     jsonDocument.put("conten", content); 
     jsonDocument.put("postDate", postDate); 
     jsonDocument.put("tags", tags); 
     jsonDocument.put("author", author); 

     return jsonDocument; 
    } 

} 

我用命令行运行ElasticSearch:

elasticsearch.bat

并正确运行:

server

在那之后,我跑我的Java代码,这里是从Eclipse的日志和服务器:

errors

我应该配置什么?我看到过这样的教程,每次都是非常类似的代码,这些代码从来不适合我。

感谢

回答

1

好吧,我解决了这个问题。实际上,问题出在ElasticSearch Client和ES Java API的版本上。

将ES Java API升级到与ES Client相同的版本解决了此问题。

此处了解详情:

Java API 1.x Client

重要:

请注意,我们鼓励您使用相同版本的客户端 和集群两侧。 混合主要版本时,您可能会遇到一些不兼容问题。

1

你jsonDocument有一个错字:

jsonDocument.put("conten", content); 

应该

jsonDocument.put("content", content); 

我相信

+1

这只是我的HashMap中的一个键名 – ruhungry