2014-02-24 57 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