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

时间:2017-04-17 06:33:33

标签: elasticsearch spring-boot spring-data-elasticsearch

我刚开始通过演示项目学习ElasticsearchSpring 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

我能够通过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_name elasticsearch_shubham不是预期的,我认为这是elasticsearch

我在想的是我在这里遗漏了一些非常基本的东西。我的机器现在有2个不同的集群。

有关我如何知道Spring Data Elasticsearch项目是如何工作的更多信息,我创建了一些实体,并使用控制器进行查询,保持工作。

所以,我有以下问题:

  1. 如何使用CURL?{/ li>通过命令行通过elasticsearch创建的群集连接?
  2. 是否有任何用户界面,我可以通过该界面查看Kibana中的所有数据,可能使用Spring Data Elasticsearch
  3. application.properties实际使用的是默认群集,而不是#include <stdio.h> #include <stdlib.h> #include <string.h> #define SIZE 500 int main(void) { FILE* pfile; pfile = fopen("/tmp/code","r"); //open file char *stringBuffer = (char *)malloc(SIZE * sizeof(char)); //dynamic string char ch; int i = 0; ch = getc(pfile); //read file while(ch != EOF) //until end { //pass into string counter++; stringBuffer[i] = ch; ch = getc(pfile); i++; } fclose(pfile); //resize string int stringSize = (int)(sizeof(stringBuffer)/sizeof(char)); stringBuffer = (char *)realloc(stringBuffer,(stringSize * sizeof(char))); printf("the string works: %s \n",stringBuffer); int intger = (int)*stringBuffer; //this is what i want to work!!!! //but more like //int intger = (int)stringBuffer; printf("the intger doesn't work if more than 1 decimal place: %i \n",(intger - 48)); free(stringBuffer); return(0); } ~ ~ 文件中提到的群集名称吗?

1 个答案:

答案 0 :(得分:0)

  

显然,不是期望的cluster_name是elasticsearch_shubham   我猜是默认的。

实际上,如果您希望您的群集具有名称&#39; shubham_lookup_cs_default&#39; 比你需要更新ES_HOME / config / elasticsearch.yml

cluster.name: my_cluster

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

  

如何通过Spring Data Elasticsearch创建的集群进行连接   通过命令行,使用CURL?

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

cd elasticsearch-5.3.0/bin/
./elasticsearch
  

是否有任何用户界面,通过它我可以看到所有数据   elasticsearch,也许使用Kibana?

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

enter image description here

  

Spring Data Elasticsearch实际上是否使用默认群集,   而不是我在application.properties中提到的集群名称   文件?

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