我剛開始學習Elasticsearch
和Spring 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_name
是elasticsearch_shubham
這是默認的,我猜。
我在想什麼是我在這裏失去了一些非常基本的東西。現在我的機器上存在2個不同的羣集。
欲瞭解更多關於我如何知道elasticsearch
項目正在工作的信息,我做了一些實體並堅持使用控制器查詢工作。
所以,我有以下問題:
- 我如何通過通過命令行通過
Spring Data Elasticsearch
作出的集羣連接,使用curl? - 是否有任何用戶界面,通過它我可以看到
elasticsearch
中的所有數據,也許使用Kibana
? - 是
Spring Data Elasticsearch
實際上是使用默認集羣,而不是我在application.properties
文件中提到的集羣名稱?
最後一點,我檢查了'elasticsearch.yml',並指向相同的路徑作爲'spring.data.elasticsearch.properties.path .data'在我的Spring項目中。但現在,我無法通過CLI啓動Elasticsearch,但項目運行良好。異常是'IllegalStateException:未能獲得節點鎖,嘗試[lock_id] [0];也許這些位置不可寫,或者多個節點在不增加'的情況下啓動。很顯然,鎖被保持。 如何跨CLI和Spring Data項目維護相同的數據? –