2017-04-17 52 views
0

我剛開始學習ElasticsearchSpring Data Elasticsearch與一個演示項目,我能夠啓動並運行。使用brew install elasticsearch在Mac上安裝Elasticsearch並使用brew service start elasticsearch啓動它。如何使用Spring Data Elasticsearch在本地連接ES羣集?

對於項目,

@Configuration 
@EnableElasticsearchRepositories(basePackages = "com.shubham.entities") 
@ComponentScan(basePackages = "com.shubham") 
public class DataConfig { 

private static Logger logger = LoggerFactory.getLogger(DataConfig.class); 

@Value("${elasticsearch.home}") 
private String elasticsearchHome; 

@Bean 
public NodeBuilder nodeBuilder() { 
    return new NodeBuilder(); 
} 

@Bean 
public ElasticsearchOperations elasticsearchTemplate() { 
    try { 
     final File tmpDir = File.createTempFile("elasticsearch_data", Long.toString(System.nanoTime())); 
     final Settings.Builder elasticsearchSettings = 
       Settings.settingsBuilder().put("http.enabled", "true") 
         .put("index.number_of_shards", "1") 
         .put("path.data", new File(tmpDir, "data").getAbsolutePath()) // 2 
         .put("path.logs", new File(tmpDir, "logs").getAbsolutePath()) // 2 
         .put("path.work", new File(tmpDir, "work").getAbsolutePath()); 

     return new ElasticsearchTemplate(nodeBuilder() 
       .local(true) 
       .settings(elasticsearchSettings.build()) 
       .node() 
       .client()); 

     // @formatter:on 
    } catch (final IOException ioex) { 
     logger.error("Cannot create temp dir", ioex); 
     throw new RuntimeException(); 
    } 
} 
} 

elasticsearchHome在上面的配置文件實際上是空的,我不知道這是爲什麼還在工作。在application.properties文件,

spring.data.elasticsearch.cluster-name=shubham_lookup_cs_default 
spring.data.elasticsearch.repositories.enabled=true 

我能夠通過彈簧數據JPA執行CRUD等DB操作和測試它爲好,工作好。

我的問題是,我如何通過命令行查詢它?

當我使用curl 'http://localhost:9200/?pretty',我回來:

{ 
    "name" : "4IVQcts", 
    "cluster_name" : "elasticsearch_shubham", 
    "cluster_uuid" : "WxCAzE51TfS7P4eFYJpvCA", 
    "version" : { 
    "number" : "5.3.0", 
    "build_hash" : "3adb13b", 
    "build_date" : "2017-03-23T03:31:50.652Z", 
    "build_snapshot" : false, 
    "lucene_version" : "6.4.1" 
    }, 
    "tagline" : "You Know, for Search" 
} 

顯然,並非所預期的爲cluster_nameelasticsearch_shubham這是默認的,我猜。

我在想什麼是我在這裏失去了一些非常基本的東西。現在我的機器上存在2個不同的羣集。

欲瞭解更多關於我如何知道elasticsearch項目正在工作的信息,我做了一些實體並堅持使用控制器查詢工作。

所以,我有以下問題:

  1. 我如何通過通過命令行通過Spring Data Elasticsearch作出的集羣連接,使用curl?
  2. 是否有任何用戶界面,通過它我可以看到elasticsearch中的所有數據,也許使用Kibana
  3. Spring Data Elasticsearch實際上是使用默認集羣,而不是我在application.properties文件中提到的集羣名稱?

回答

0

顯然,並非所預期的爲羣集名是elasticsearch_shubham 這是默認的,我猜。

其實,如果你想用的名字「shubham_lookup_cs_default」 比你需要更新ES_HOME /配置/ elasticsearch.yml

cluster.name: my_cluster 

如果你想爲集羣名稱默認值是elasticsearch 兩個羣集羣集,比我不確定我們能否創造兩個。檢查這個答案link

我如何通過通過命令行由Spring數據Elasticsearch 作出的集羣連接,使用curl?

我不確定,如果彈簧數據彈性搜索會創建Cluster。 Spring數據彈性將指向現有集羣。 如果你想運行集羣不僅僅是做: -

cd elasticsearch-5.3.0/bin/ 
./elasticsearch 

有沒有用戶界面,通過它我可以看到 elasticsearch的所有數據,可能使用Kibana?

是Kibana有實時分析功能。它將顯示「發現」選項卡中的所有數據。只需點擊查看: -

enter image description here

是春天的數據Elasticsearch實際使用默認的簇,而不是 我application.properties 文件中提到的羣集名稱?

可能是'shubham_lookup_cs_default'在ES_HOME/config/elasticsearch.yml中不存在。檢查是否不存在比更新,肯定它會指向'shubham_lookup_cs_default'

+0

最後一點,我檢查了'elasticsearch.yml',並指向相同的路徑作爲'spring.data.elasticsearch.properties.path .data'在我的Spring項目中。但現在,我無法通過CLI啓動Elasticsearch,但項目運行良好。異常是'IllegalStateException:未能獲得節點鎖,嘗試[lock_id] [0];也許這些位置不可寫,或者多個節點在不增加'的情況下啓動。很顯然,鎖被保持。 如何跨CLI和Spring Data項目維護相同的數據? –

相關問題