java怎么连接到elastic search集群

Python013

java怎么连接到elastic search集群,第1张

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())

}

}

}

下面介绍一下如何使用Idea连接TFS服务器,并提交变更的代码到TFS服务器。

一、连接TFS服务器,并下载代码

Figure 1

Figure 2

Figure 3 - 输入TFS服务器的地址,例如:http://tfs2013cn:8080/tfs/defaultcollection

Figure 4 - 选择服务器代码库地址和本地地址

Figure 5 - 代码下载中

Figure 6 - 选择创建项目

Figure 7

Figure 8 - 继续, 后面几项都是Idea导入代码的界面,省略截屏

Figure 9 - 打开的项目