「java集成es搜索」java集成es查询怎么写

博主:adminadmin 2022-12-23 14:51:07 54

本篇文章给大家谈谈java集成es搜索,以及java集成es查询怎么写对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java怎么连接到elastic search集群

package cn.test;

import java.net.InetAddress;

import java.net.UnknownHostException;

import org.elasticsearch.action.search.SearchResponse;

import org.elasticsearch.action.search.SearchType;

import org.elasticsearch.client.transport.TransportClient;

import org.elasticsearch.common.settings.Settings;

import org.elasticsearch.common.transport.InetSocketTransportAddress;

import org.elasticsearch.index.query.QueryBuilders;

import org.elasticsearch.search.SearchHit;

public class ElkTest {

// private static final String CLUSTER_NAME = "cluster_name";

public static final String CLUSTER_NAME = "elasticsearch"; //实例名称

private static final String IP = "127.0.0.1";

//private static final String IP = "192.168.0.29";

private static final int PORT = 9300; //端口

//1.设置集群名称:默认是elasticsearch,并设置client.transport.sniff为true,使客户端嗅探整个集群状态,把集群中的其他机器IP加入到客户端中

/*

//对ES1.6有效

private static Settings settings = ImmutableSettings

.settingsBuilder()

.put("cluster.name",CLUSTER_NAME)

.put("client.transport.sniff", true)

.build();

*/

//对ES2.0有效

private static Settings settings = Settings

.settingsBuilder()

.put("cluster.name",CLUSTER_NAME)

.put("client.transport.sniff", true)

.build();

//创建私有对象

private static TransportClient client;

//反射机制创建单例的TransportClient对象 ES1.6版本

// static {

// try {

// Class? clazz = Class.forName(TransportClient.class.getName());

// Constructor? constructor = clazz.getDeclaredConstructor(Settings.class);

// constructor.setAccessible(true);

// client = (TransportClient) constructor.newInstance(settings);

// client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(IP), PORT));

// } catch (Exception e) {

// e.printStackTrace();

// }

// }

//ES2.0版本

static {

try {

client = TransportClient.builder().settings(settings).build()

.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(IP), PORT));

} catch (UnknownHostException e) {

e.printStackTrace();

}

}

//取得实例

public static synchronized TransportClient getTransportClient(){

return client;

}

//为集群添加新的节点

public static synchronized void addNode(String name){

try {

client.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(name),9300));

} catch (UnknownHostException e) {

e.printStackTrace();

}

}

//删除集群中的某个节点

public static synchronized void removeNode(String name){

try {

client.removeTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(name),9300));

} catch (UnknownHostException e) {

e.printStackTrace();

}

}

public static void main(String args[]){

String index="logstash-2016.02.16";

String type="logs";

SearchResponse response=ElkTest.getTransportClient().prepareSearch(index)//设置要查询的索引(index)

.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)

.setTypes(type)//设置type, 这个在建立索引的时候同时设置了, 或者可以使用head工具查看

.setQuery(QueryBuilders.matchQuery("message", "Accept")) //在这里"message"是要查询的field,"Accept"是要查询的内容

.setFrom(0)

.setSize(10)

.setExplain(true)

.execute()

.actionGet();

for(SearchHit hit:response.getHits()){

System.out.println(hit.getSourceAsString());

}

}

}

Java代码查询es 的索引是yellow的状态,怎么可以查询不报错?

建议提前检查,为yellow直接提醒运维去维护为green。不过我这边用的es6.2.3yellow是正常查询的。建议你检查一下环境配置应该不是yellow的问题。试了一下;为red都可以正常查询的(java代码查询结果和下图es-head查询结果一致)

java es搜索引擎有没有in的语句

获取数据:

while(rs.next()){

String name = rs.getString("name") ;

String pass = rs.getString(1) ; // 此方法比较高效

}

java集成es搜索的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java集成es查询怎么写、java集成es搜索的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-23,除非注明,否则均为首码项目网原创文章,转载请注明出处。