public class EStudyFirst {
private TransportClient client = null;
/**
* 获取客户端连接对象
*/
@BeforeTest
public void getClient() throws UnknownHostException {
//获取settings设置对象
Settings settings = Settings.builder().put("cluster.name", "myes").build();
TransportAddress transportAddress1 = new TransportAddress(InetAddress.getByName("node01"), 9300);
TransportAddress transportAddress2 = new TransportAddress(InetAddress.getByName("node02"), 9300);
TransportAddress transportAddress3 = new TransportAddress(InetAddress.getByName("node02"), 9300);
//客户端对象TransportClient
client = new PreBuiltTransportClient(settings)
.addTransportAddress(transportAddress1)
.addTransportAddress(transportAddress2)
.addTransportAddress(transportAddress3);
System.out.println(client.toString());
}
/**
* 自己手动拼装json进行添加数据
*/
@Test
public void createIndex1(){
String json = "{" +
"\"user\":\"kimchy\"," +
"\"postDate\":\"2013-01-30\"," +
"\"message\":\"travelying out Elasticsearch\"" +
"}";
IndexRequestBuilder indexRequestBuilder = client.prepareIndex("myindex1", "article", "1").setSource(json, XContentType.JSON);
//调用get方法触发请求真正的去执行
IndexResponse indexResponse = indexRequestBuilder.get();
}
/*
使用map创建索引
*/
@Test
public void createIndex2(){
Map<String ,String > map = new HashMap<String,String >();
map.put("name","zhangsan");
map.put("age","28");
map.put("sex","0");
IndexRequestBuilder indexRequestBuilder = client.prepareIndex("myindex1", "article", "2").setSource(map);
//触发请求真正的去执行
indexRequestBuilder.get();
}
/**
* 第三种创建索引的方式
*/
@Test
public void createIndex3() throws IOException {
IndexRequestBuilder indexRequestBuilder = client.prepareIndex("myindex1", "article", "3").setSource(new XContentFactory().jsonBuilder()
.startObject()
.field("name", "李四")
.field("age", "55")
.field("address", "北京").endObject());
//触发请求真正的去执行
IndexResponse indexResponse = indexRequestBuilder.get();
}
/**
* 将JavaBean转换成为json格式的字符串
*/
@Test
public void createIndex4(){
Person person = new Person();
person.setAddress("北京");
person.setAge(25);
person.setEmail("163@163.com");
person.setPhone("15898765432");
String jsonString = JSONObject.toJSONString(person);
IndexRequestBuilder indexRequestBuilder = client.prepareIndex("myindex1", "article", "4").setSource(jsonString, XContentType.JSON);
IndexResponse indexResponse = indexRequestBuilder.get();
}
/**
* 批量添加数据
*/
@Test
public void addBatch(){
BulkRequestBuilder bulkRequestBuilder = client.prepareBulk();
Person person = new Person();
person.setPhone("13587963214");
person.setId(5);
Person person1 = new Person();
person1.setPhone("13587963214");
person1.setId(5);
Person person2 = new Person();
person2.setPhone("13587963214");
person2.setId(5);
Person person3 = new Person();
person3.setPhone("13587963214");
person3.setId(5);
String personStr = JSONObject.toJSONString(person);
String personStr1 = JSONObject.toJSONString(person1);
String personStr2 = JSONObject.toJSONString(person2);
String personStr3 = JSONObject.toJSONString(person3);
IndexRequestBuilder indexRequestBuilder = client.prepareIndex("myindex1", "article", "5").setSource(personStr, XContentType.JSON);
IndexRequestBuilder indexRequestBuilder1 = client.prepareIndex("myindex1", "article", "6").setSource(personStr1, XContentType.JSON);
IndexRequestBuilder indexRequestBuilder2 = client.prepareIndex("myindex1", "article", "7").setSource(personStr2, XContentType.JSON);
IndexRequestBuilder indexRequestBuilder3 = client.prepareIndex("myindex1", "article", "8").setSource(personStr3, XContentType.JSON);
//批量添加,获取到bulkrequestBuilder对象
BulkRequestBuilder add = bulkRequestBuilder.add(indexRequestBuilder).add(indexRequestBuilder1).add(indexRequestBuilder2).add(indexRequestBuilder3);
BulkResponse bulkItemResponses = add.get();
}
/**
* 更新索引操作
*/
@Test
public void updateIndex(){
HashMap<String, String> map = new HashMap<>();
map.put("phone", "15899996666");
UpdateResponse updateResponse = client.prepareUpdate("myindex1", "article", "8").setDoc(map).get();
}
/**
* 删除索引
*/
@Test
public void deleteIndex(){
client.prepareDelete("myindex1","article","8").get();
}
/**
* 删除整个索引库
*/
@Test
public void deleteIndexDB(){
client.admin().indices().prepareDelete("myindex1").execute().actionGet();
}
/**
* 初始化一批数据到索引库当中去准备做查询使用
* 注意这里初始化的时候,需要给我们的数据设置分词属性
* @throws Exception
*/
@Test
public void createIndexBatch() throws Exception {
Settings settings = Settings
.builder()
.put("cluster.name", "myes") //节点名称, 在es配置的时候设置
//自动发现我们其他的es的服务器
.put("client.transport.sniff", "true")
.build();
//创建客户端
TransportClient client = new PreBuiltTransportClient(settings)
.addTransportAddress(new TransportAddress(InetAddress.getByName("node01"), 9300));//以本机作为节点
//创建映射
XContentBuilder mapping = jsonBuilder()
.startObject()
.startObject("properties")
// .startObject("m_id").field("type","keyword").endObject()
.startObject("id").field("type", "integer").endObject()
.startObject("name").field("type", "text").field("analyzer", "ik_max_word").endObject()
.startObject("age").field("type", "integer").endObject()
.startObject("sex").field("type", "text").field("analyzer", "ik_max_word").endObject()
.startObject("address").field("type", "text").field("analyzer", "ik_max_word").endObject()
.startObject("phone").field("type", "text").endObject()
.startObject("email").field("type", "text").endObject()
.startObject("say").field("type", "text").field("analyzer", "ik_max_word").endObject()
.endObject()
.endObject();
//pois:索引名 cxyword:类型名(可以自己定义)
PutMappingRequest putmap = Requests.putMappingRequest("indexsearch").type("mysearch").source(mapping);
//创建索引
client.admin().indices().prepareCreate("indexsearch").execute().actionGet();
//为索引添加映射
client.admin().indices().putMapping(putmap).actionGet();
BulkRequestBuilder bulkRequestBuilder = client.prepareBulk();
Person lujunyi = new Person(2, "玉麒麟卢俊义", 28, 1, "水泊梁山", "17666666666", "lujunyi@itcast.com","hello world今天天气还不错");
Person wuyong = new Person(3, "智多星吴用", 45, 1, "水泊梁山", "17666666666", "wuyong@itcast.com","行走四方,抱打不平");
Person gongsunsheng = new Person(4, "入云龙公孙胜", 30, 1, "水泊梁山", "17666666666", "gongsunsheng@itcast.com","走一个");
Person guansheng = new Person(5, "大刀关胜", 42, 1, "水泊梁山", "17666666666", "wusong@itcast.com","我的大刀已经饥渴难耐");
Person linchong = new Person(6, "豹子头林冲", 18, 1, "水泊梁山", "17666666666", "linchong@itcast.com","梁山好汉");
Person qinming = new Person(7, "霹雳火秦明", 28, 1, "水泊梁山", "17666666666", "qinming@itcast.com","不太了解");
Person huyanzhuo = new Person(8, "双鞭呼延灼", 25, 1, "水泊梁山", "17666666666", "huyanzhuo@itcast.com","不是很熟悉");
Person huarong = new Person(9, "小李广花荣", 50, 1, "水泊梁山", "17666666666", "huarong@itcast.com","打酱油的");
Person chaijin = new Person(10, "小旋风柴进", 32, 1, "水泊梁山", "17666666666", "chaijin@itcast.com","吓唬人的");
Person zhisheng = new Person(13, "花和尚鲁智深", 15, 1, "水泊梁山", "17666666666", "luzhisheng@itcast.com","倒拔杨垂柳");
Person wusong = new Person(14, "行者武松", 28, 1, "水泊梁山", "17666666666", "wusong@itcast.com","二营长。。。。。。");
bulkRequestBuilder.add(client.prepareIndex("indexsearch", "mysearch", "1")
.setSource(JSONObject.toJSONString(lujunyi), XContentType.JSON)
);
bulkRequestBuilder.add(client.prepareIndex("indexsearch", "mysearch", "2")
.setSource(JSONObject.toJSONString(wuyong), XContentType.JSON)
);
bulkRequestBuilder.add(client.prepareIndex("indexsearch", "mysearch", "3")
.setSource(JSONObject.toJSONString(gongsunsheng), XContentType.JSON)
);
bulkRequestBuilder.add(client.prepareIndex("indexsearch", "mysearch", "4")
.setSource(JSONObject.toJSONString(guansheng), XContentType.JSON)
);
bulkRequestBuilder.add(client.prepareIndex("indexsearch", "mysearch", "5")
.setSource(JSONObject.toJSONString(linchong), XContentType.JSON)
);
bulkRequestBuilder.add(client.prepareIndex("indexsearch", "mysearch", "6")
.setSource(JSONObject.toJSONString(qinming), XContentType.JSON)
);
bulkRequestBuilder.add(client.prepareIndex("indexsearch", "mysearch", "7")
.setSource(JSONObject.toJSONString(huyanzhuo), XContentType.JSON)
);
bulkRequestBuilder.add(client.prepareIndex("indexsearch", "mysearch", "8")
.setSource(JSONObject.toJSONString(huarong), XContentType.JSON)
);
bulkRequestBuilder.add(client.prepareIndex("indexsearch", "mysearch", "9")
.setSource(JSONObject.toJSONString(chaijin), XContentType.JSON)
);
bulkRequestBuilder.add(client.prepareIndex("indexsearch", "mysearch", "10")
.setSource(JSONObject.toJSONString(zhisheng), XContentType.JSON)
);
bulkRequestBuilder.add(client.prepareIndex("indexsearch", "mysearch", "11")
.setSource(JSONObject.toJSONString(wusong), XContentType.JSON)
);
bulkRequestBuilder.get();
client.close();
}
/**
* 通过每条数据的系统id来进行查询
*/
@Test
public void getBySystemId(){
//通过系统id来进行查询,调用prepareGet方法,传入三个参数
GetRequestBuilder getRequestBuilder = client.prepareGet("indexsearch", "mysearch", "11");
//获取到查询的数据结果
GetResponse getResponse = getRequestBuilder.get();
String id = getResponse.getId();//获取系统id为多少
System.out.println("系统id为"+ id);
String sourceAsString = getResponse.getSourceAsString();//将结果转换成为json格式的字符串
System.out.println(sourceAsString);
}
/**
* 查询索引库当中所有的数据
*/
@Test
public void queryAll(){
SearchResponse searchResponse = client
.prepareSearch("indexsearch")//指定我们查询的索引库
.setTypes("mysearch") //指定我们需要查询哪个类型
.setQuery(QueryBuilders.matchAllQuery()) //指定我们查询的条件
.get(); //调用get方法,触发我们的请求真正的去执行
SearchHits hits = searchResponse.getHits();
SearchHit[] hitsAll = hits.getHits();
//每一个searchHit封装完了我们的一条数据
for (SearchHit searchHit : hitsAll) {
String id = searchHit.getId();
System.out.println("系统id为" + id);
String sourceAsString = searchHit.getSourceAsString();
System.out.println(sourceAsString);
}
}
/**
* 年龄范围值查询
* 查询年龄是18到28的数据
*/
@Test
public void rangeQuery(){
SearchResponse searchResponse = client.prepareSearch("indexsearch").setTypes("mysearch").setQuery(QueryBuilders.rangeQuery("age").gt(18).lte(28)).get();
SearchHits hits = searchResponse.getHits();
SearchHit[] hitsAll = hits.getHits();
for (SearchHit searchHit : hitsAll) {
System.out.println(searchHit.getId());
System.out.println(searchHit.getSourceAsString());
}
}
/**
* 按照词条进行查询
*/
@Test
public void termQuery(){
SearchResponse searchResponse = client.prepareSearch("indexsearch").setTypes("mysearch").setQuery(QueryBuilders.termQuery("say", "熟悉")).get();
SearchHits hits = searchResponse.getHits();
SearchHit[] hits1 = hits.getHits();
for (SearchHit searchHit : hits1) {
System.out.println(searchHit.getId());
System.out.println(searchHit.getSourceAsString());
}
}
@AfterTest
public void closeClient(){
client.close();
}
}
ElasticSearch简单入门JavaAPI
最新推荐文章于 2024-07-21 12:54:53 发布