版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lhc2207221755/article/details/80247672
/**
* \* Created: liuhuichao
* \* Date: 2018/5/8
* \* Time: 下午9:35
* \* Description: es simple api use
* \
*/
public class SimpleEsTest {
private TransportClient client;
private IndexRequest source;
/**
* es 连接测试
* @throws Exception
*/
@Before
public void getConnectTest() throws Exception{
// 通过setting对象指定集群配置信息,
// 配置的集群名
Settings settings = Settings.settingsBuilder().put("cluster.name", "elasticsearch_wenbronk") // 设置集群名
.put("client.transport.ignore_cluster_name", true) // 忽略集群名字验证, 打开后集群名字不对也能连接上
//探测集群中机器状态
.put("client.transport.sniff", true)
.build();
client = TransportClient.builder().settings(settings).build()
.addTransportAddress(new InetSocketTransportAddress(new InetSocketAddress("127.0.0.1", 9300)));
// 默认5s
// 多久打开连接, 默认5s
System.out.println("success connect");
}
/**
* 存入数据
*/
@Test
public void addDataToESTest(){
UserInfoEntity userInfo=new UserInfoEntity();
userInfo.setWechatName("爱爱爱爱菠萝");
userInfo.setId(1);
String jsonData= com.alibaba.fastjson.JSONObject.toJSONString(userInfo);
//在这里创建我们要索引的对象
IndexResponse response = client.prepareIndex("t_user_info", "user")
//必须为对象单独指定ID
.setId("2")
.setSource(jsonData)
.execute()
.actionGet();
//多次index这个版本号会变
System.out.println("response.version():"+response.getVersion());
client.close();
}
/**
* 根据id删除数据
*/
@Test
public void deleteDataById(){
//在这里创建我们要索引的对象
DeleteResponse response = client.prepareDelete("t_user_info", "user", "2")
.execute().actionGet();
System.out.println(response.getId());
System.out.println(com.alibaba.fastjson.JSONObject.toJSONString(response.getHeaders()));
}
/**
* 根据id查询
*/
@Test
public void queryDataByIdTest(){
//在这里创建我们要索引的对象
GetResponse response = client.prepareGet("t_user_info", "user", "1")
.execute().actionGet();
System.out.println("response.getId():"+response.getId());
System.out.println("response.getSourceAsString():"+response.getSourceAsString());
}
/**
* 根据微信用户名模糊查询用户
*/
@Test
public void queryDataGyWeChatName(){
/**
* 使用QueryBuilder
* termQuery("key", obj) 完全匹配
* termsQuery("key", obj1, obj2..) 一次匹配多个值
* matchQuery("key", Obj) 单个匹配, field不支持通配符, 前缀具高级特性
* multiMatchQuery("text", "field1", "field2"..); 匹配多个字段, field有通配符忒行
* matchAllQuery(); 匹配所有文件
*/
QueryBuilder queryBuilder = QueryBuilders.termsQuery("wechatName","lhc爱吃");
searchFunction(queryBuilder);
}
/**
* 多字段匹配
*/
@Test
public void multiKeysMatchTest(){
String keyWord="lhc";
//多个字段匹配
MultiMatchQueryBuilder query = QueryBuilders.multiMatchQuery( keyWord,"wechatName");
searchFunction(query);
}
/**
* 处理结果
* @param queryBuilder
*/
private void searchFunction(QueryBuilder queryBuilder) {
SearchResponse response = client.prepareSearch("t_user_info")
.setTypes("user")
.setScroll(new TimeValue(60000))
.setQuery(queryBuilder)
.setSize(100).execute().actionGet();
for (SearchHit hit : response.getHits()) {
System.out.println("********[id]="+hit.getSource().get("id"));
System.out.println("********[wechatName]="+hit.getSource().get("wechatName"));
}
}
}
ps,附上entithy类:
public class UserInfoEntity {
/**
* id
*/
private long id;
/**
* 用户的来源渠道类型
*/
private int channelType;
/**
* 用户的来源渠道ID
*/
private long channelId;
/**
* 用户的微信号
*/
private String wechat;
/**
* 用户的微信昵称
*/
private String wechatName;
/**
* 用户的QQ号
*/
private String qq;
/**
* 额外的信息
*/
private String extra;
public int getChannelType() {
return channelType;
}
public void setChannelType(int channelType) {
this.channelType = channelType;
}
public long getChannelId() {
return channelId;
}
public void setChannelId(long channelId) {
this.channelId = channelId;
}
public String getWechat() {
return wechat;
}
public void setWechat(String wechat) {
this.wechat = wechat;
}
public String getWechatName() {
return wechatName;
}
public void setWechatName(String wechatName) {
this.wechatName = wechatName;
}
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
public String getExtra() {
return extra;
}
public void setExtra(String extra) {
this.extra = extra;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
}