Я только начал изучать Elasticsearch
и Spring Data Elasticsearch
с демонстрационным проектом, и я смог приступить к работе.
Установил Elasticsearch
на Mac с помощью brew install elasticsearch
и запустил с помощью brew service start elasticsearch
.
Для проекта,
@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
Я могу выполнять CRUD и другие операции с БД через Spring Data JPA и также протестировал его, работает хорошо.
Мой вопрос в том, как я могу запросить его через командную строку?
Когда я использую 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
?