如何连接到本地使用 Spring Data Elasticsearch 创建的 ES 集群?

How to connect to ES cluster locally made using Spring Data Elasticsearch?

我刚开始通过演示项目学习 ElasticsearchSpring Data Elasticsearch,我能够起床 运行。

使用 brew install elasticsearch 在 Mac 上安装 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

我能够通过 Spring Data JPA 执行 CRUD 和其他数据库操作并对其进行了测试,效果很好。

我的问题是,如何通过命令行查询?

当我使用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. 如何使用 CURL 通过命令行连接 Spring Data Elasticsearch 创建的集群?
  2. 是否有任何用户界面可以让我查看 elasticsearch 中的所有数据,也许使用 Kibana
  3. Spring Data Elasticsearch实际上是在使用默认集群,而不是我在application.properties文件中提到的集群名称吗?

Clearly, not the expected one as cluster_name is elasticsearch_shubham which is default I guess.

实际上,如果您想要名称为 'shubham_lookup_cs_default' 的集群 比你需要更新 ES_HOME/config/elasticsearch.yml

cluster.name: my_cluster

集群名称的默认值为elasticsearch 如果你想要两个集群,我不确定我们是否可以创建两个。检查这个答案 link .

How do I connect through the cluster made by Spring Data Elasticsearch through command line, using CURL?

我不确定,如果 spring 数据弹性搜索将创建集群。 Spring 数据弹性将仅指向现有集群。 如果你想 运行 聚类而不只是做 :-

cd elasticsearch-5.3.0/bin/
./elasticsearch

Is there any User Interface through which I can see all data in elasticsearch, maybe using Kibana?

是的,Kibana 用于实时分析。它将在 Discover Tab 中显示所有数据。只需点击发现 :-

Is Spring Data Elasticsearch actually using the default cluster, instead of the cluster name I mentioned in application.properties file?

可能 'shubham_lookup_cs_default' 不存在于 ES_HOME/config/elasticsearch.yml 中。检查是否不存在而不是更新,肯定会指向 'shubham_lookup_cs_default'