我刚开始通过演示项目学习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
我能够通过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
项目是如何工作的更多信息,我创建了一些实体,并使用控制器进行查询,保持工作。
所以,我有以下问题:
elasticsearch
创建的群集连接?
Kibana
中的所有数据,可能使用Spring Data Elasticsearch
?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);
}
~
~
文件中提到的群集名称吗?答案 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选项卡中显示所有数据。只需点击发现: -
Spring Data Elasticsearch实际上是否使用默认群集, 而不是我在application.properties中提到的集群名称 文件?
可能是&#39; shubham_lookup_cs_default&#39;在ES_HOME / config / elasticsearch.yml中不存在。检查是否不存在而不是更新,肯定会指向&#39; shubham_lookup_cs_default&#39;