我是elasticsearch的新手,尝试使用查询、日期直方图和facets从elasticsearch检索索引数据。我有elasticsearch和kibana在服务器上正常运行。现在,我想从elasticsearch中提取特定的索引数据,并在另一个自主开发的应用程序(SpringWeb应用程序)中将其绘制为图形。因此,考虑使用spring数据elasticsearch,但通过互联网找到了使用elasticsearch存储库的示例应用程序。
https://github.com/BioMedCentralLtd/spring-data-elasticsearch-sample-application
请帮助我使用spring data elasticsearch或其他更好的方法从elasticsearch中提取数据。(我不想像示例中那样使用对象/存储库,只需要以JSON字符串的形式获取数据)。
最后,我使用了普通的Elasticseach java客户端来工作。下面的代码可能很有用。
<bean id="esConnection" class="com.es.connection.ESConnection" scope="singleton" autowire="byName">
<property name="host" value="${es.host}" />
<property name="port" value="${es.port}" />
<property name="clusterName" value="${es.cluster}" />
</bean>
import javax.annotation.PostConstruct;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.transport.TransportClient;
import org.elasticsearch.common.settings.ImmutableSettings;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
public class ESConnection {
TransportClient client;
private String host;
private int port;
private String clusterName;
public ESConnection() {
}
public ESConnection(String host,int port,String clusterName) {
this.host = host;
this.clusterName = clusterName;
this.port = port;
}
@PostConstruct
public void connect() {
Settings settings = ImmutableSettings.settingsBuilder()
.put("cluster.name",clusterName)
.build();
client = new TransportClient(settings);
client.addTransportAddress(new InetSocketTransportAddress(host,port));
}
public void setHost(String host) {
this.host = host;
}
public void setPort(int port) {
this.port = port;
}
public void setClusterName(String clusterName) {
this.clusterName = clusterName;
}
public Client getClient() {
return (Client) client;
}
public void close() {
if (client != null) {
client.close();
}
}
@Override
public String toString() {
return String.format("%s, Host: %s, Port: %s, Cluster: %s", super.toString(), host, port, clusterName);
}
}
在启动侦听器中,
public class StartupListener implements ServletContextListener {
@Autowired
ESConnection esConnection;
public void contextInitialized(ServletContextEvent sce) {
try {
ServletContext context = sce.getServletContext();
context.setAttribute("esConnection", esConnection);
} catch (SchedulerException se) {
} catch (Exception e) {
}
}
public void contextDestroyed(ServletContextEvent sce) {
ServletContext context = sce.getServletContext();
if (this.esConnection != null) {
this.esConnection.close();
context.removeAttribute("esConnection");
}
}
}
我尝试使用下面的elasticsearch查询来处理Spring数据。目的是为字段返回唯一的结果。就像与SQL数据库进行比较一样。 我将该字段配置为关键字,它使查询在api中完美运行,如下所示: 我的问题是,当我尝试使用StringQuery运行时,相同的查询在Spring数据中不起作用,我得到以下错误。我猜它使用不同的api来运行查询。 我尝试过使用类型来实现相同的结果,没有重复和没有对象加载,
我正在尝试查询spring data elasticsearch存储库中的嵌套属性。我的存储库如下所示: 域对象Person和Address(无getter/setter)定义如下: 我的测试保存一个人的文档,并尝试使用repository方法读取它。但没有返回任何结果。以下是测试方法: spring data elasticsearch是否支持默认的spring数据查询生成?
我在继承和ElasticsearchRepository方面有一些问题。我的代码(简短版本):实体: 存储库: 我的问题是:我能够将数据放入弹性搜索中,但无法检索它们。如果我做一个存储库。findall()它可以工作。如果我做一个存储库。findWithUri(uri)它不工作(空结果)findByUri的分析异常 我试图搜索示例:https://github.com/spring-project
我试图使用Spring数据Elasticsearch连接到Elasticsearch 5。 根据链接-https://github.com/spring-projects/spring-data-elasticsearch,spring数据弹性搜索-3.0.0。M4与Elasticsearch 5.4.0兼容 但我在尝试连接Elasticsearch时出现以下错误 请告诉我,如果你们中的任何一个人
我试图使用Spring Data连接Elasticsearch 6.1(我使用Spring Boot) 但是提到最新版本只支持5.2。,有没有支持ES 6.1的替代方案? https://github.com/spring-projects/spring-data-elasticsearch/blob/master/README.md
我使用的是Spring Boot 2.1.6和Elasticsearch 6.2.2 编辑以更好地澄清我的问题: 当我让Spring在我的存储库中使用以下方法为我生成查询时: 我想这意味着它将从索引中选择,然后按创建的降序排列结果,最后它将只返回第一个(最新)结果。 但索引中只有两个条目,相同的条目减去创建日期,该查询返回两个结果。我认为这意味着它不会转化为我所想的,而是会选择具有该ID的所有帐户