[西柚仔]Java操作ElasticSearch

阅读: 评论:0

[西柚仔]Java操作ElasticSearch

[西柚仔]Java操作ElasticSearch

1.1 引入maven依赖

<dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>6.8.0</version>
</dependency>
<dependency><groupId>org.elasticsearch.client</groupId><artifactId>transport</artifactId><version>6.8.0</version>
</dependency>
<dependency><groupId>org.elasticsearch.plugin</groupId><artifactId>transport-netty4-client</artifactId><version>6.8.0</version>
</dependency>

1.2创建索引和类型

Rest的创建方式
// 1.在restful的创建方式PUT /dangdang
{"mappings": {"book":{"properties": {"name":{"type":"text","analyzer": "ik_max_word"},"age":{"type":"integer"},"sex":{"type":"keyword"},"content":{"type":"text","analyzer": "ik_max_word"}}}}
}
0. 创建客户端操作对象
//创建ES客户端操作对象
@Test
public void init() throws UnknownHostException {PreBuiltTransportClient preBuiltTransportClient = new PreBuiltTransportClient(Settings.EMPTY);preBuiltTransportClient.addTransportAddress(new ByName("192.168.202.200"),9300));
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EUi6IMra-1598000722733)(E:/桌面备份/文档/技术资料/elasticsearch 6.8.0全套资料/elasticsearch/笔记/ElasticSearch_6.8.0版本.assets/image-20200702203651495.png)]

1. 创建索引
//创建索引
@Test
public void createIndex() throws UnknownHostException, ExecutionException, InterruptedException {PreBuiltTransportClient preBuiltTransportClient = new PreBuiltTransportClient(Settings.EMPTY);preBuiltTransportClient.addTransportAddress(new ByName("192.168.202.200"),9300));//定义索引请求CreateIndexRequest ems = new CreateIndexRequest("ems");//执行索引创建CreateIndexResponse createIndexResponse = preBuiltTransportClient.admin().indices().create(ems).get();System.out.println(createIndexResponse.isAcknowledged());
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OyMGwkGA-1598000722735)(E:/桌面备份/文档/技术资料/elasticsearch 6.8.0全套资料/elasticsearch/笔记/ElasticSearch_6.8.0版本.assets/image-20200702203936122.png)]

2. 删除索引
//删除索引
@Test
public void deleteIndex() throws UnknownHostException, ExecutionException, InterruptedException {PreBuiltTransportClient preBuiltTransportClient = new PreBuiltTransportClient(Settings.EMPTY);preBuiltTransportClient.addTransportAddress(new ByName("192.168.202.200"),9300));//定义索引请求DeleteIndexRequest ems = new DeleteIndexRequest("ems");//执行索引删除AcknowledgedResponse acknowledgedResponse = preBuiltTransportClient.admin().indices().delete(ems).get();System.out.println(acknowledgedResponse.isAcknowledged());
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CIeaP06L-1598000722737)(E:/桌面备份/文档/技术资料/elasticsearch 6.8.0全套资料/elasticsearch/笔记/ElasticSearch_6.8.0版本.assets/image-20200702203443545.png)]

3 .创建索引和类型
//创建索引类型和映射
@Test
public void init() throws UnknownHostException, ExecutionException, InterruptedException {PreBuiltTransportClient preBuiltTransportClient = new PreBuiltTransportClient(Settings.EMPTY);preBuiltTransportClient.addTransportAddress(new ByName("192.168.202.200"),9300));//创建索引CreateIndexRequest ems = new CreateIndexRequest("ems");//定义json格式映射String json = "{"properties":{"name":{"type":"text","analyzer":"ik_max_word"},"age":{"type":"integer"},"sex":{"type":"keyword"},"content":{"type":"text","analyzer":"ik_max_word"}}}";//设置类型和mappingems.mapping("emp",json, XContentType.JSON);//执行创建CreateIndexResponse createIndexResponse = preBuiltTransportClient.admin().indices().create(ems).get();System.out.println(createIndexResponse.isAcknowledged());
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oWwIKJ9R-1598000722738)(E:/桌面备份/文档/技术资料/elasticsearch 6.8.0全套资料/elasticsearch/笔记/ElasticSearch_6.8.0版本.assets/image-20200702205610800.png)]

1.3 索引一条记录

1.指定id索引记录
//索引一条文档 指定id
@Test
public void createIndexOptionId() throws JsonProcessingException {Emp emp = new Emp("小陈", 23, "男", "这是一个单纯的少年,单纯的我!");String s = JSONString(emp);IndexResponse indexResponse = transportClient.prepareIndex("ems", "emp", "1").setSource(s, XContentType.JSON).get();System.out.println(indexResponse.status());
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-irfeekTQ-1598000722740)(E:/桌面备份/文档/技术资料/elasticsearch 6.8.0全套资料/elasticsearch/笔记/ElasticSearch_6.8.0版本.assets/image-20200702210532815.png)]

2.自定生成id索引记录
//索引一条文档 指定id
@Test
public void createIndexOptionId() throws JsonProcessingException {Emp emp = new Emp("小白", 23, "男", "这是一个单纯的小白,单纯的我!");String s = JSONString(emp);IndexResponse indexResponse = transportClient.prepareIndex("ems", "emp").setSource(s, XContentType.JSON).get();System.out.println(indexResponse.status());
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6z639E5L-1598000722741)(E:/桌面备份/文档/技术资料/elasticsearch 6.8.0全套资料/elasticsearch/笔记/ElasticSearch_6.8.0版本.assets/image-20200702210643404.png)]

1.4 更新一条索引

//更新一条记录
@Test
public void testUpdate() throws IOException {Emp emp = new Emp();emp.setName("明天你好");String s = JSONString(emp);UpdateResponse updateResponse = transportClient.prepareUpdate("ems", "emp", "1").setDoc(s,XContentType.JSON).get();System.out.println(updateResponse.status());
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K8rOvQkn-1598000722742)(E:/桌面备份/文档/技术资料/elasticsearch 6.8.0全套资料/elasticsearch/笔记/ElasticSearch_6.8.0版本.assets/image-20200702210954634.png)]

1.5 删除一条索引

//删除一条记录
@Test
public void  testDelete() throws UnknownHostException {DeleteResponse deleteResponse = transportClient.prepareDelete("ems", "emp", "1").get();System.out.println(deleteResponse.status());
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YJhCz67a-1598000722743)(E:/桌面备份/文档/技术资料/elasticsearch 6.8.0全套资料/elasticsearch/笔记/ElasticSearch_6.8.0版本.assets/image-20200702211137768.png)]

1.6 批量更新

//批量更新
@Test
public void testBulk() throws IOException {//添加第一条记录IndexRequest request1 = new IndexRequest("ems","emp","1");Emp emp = new Emp("中国科技", 23, "男", "这是好人");request1.JSONString(emp),XContentType.JSON);//添加第二条记录IndexRequest request2 = new IndexRequest("ems","emp","2");Emp emp2 = new Emp("中国科技", 23, "男", "这是好人");request2.JSONString(emp2),XContentType.JSON);//更新记录UpdateRequest updateRequest = new UpdateRequest("ems","emp","1");Emp empUpdate = new Emp();empUpdate.setName("中国力量");updateRequest.JSONString(empUpdate),XContentType.JSON);//删除一条记录DeleteRequest deleteRequest = new DeleteRequest("ems","emp","2");BulkResponse bulkItemResponses = transportClient.prepareBulk().add(request1).add(request2).add(updateRequest).add(deleteRequest).get();BulkItemResponse[] items = Items();for (BulkItemResponse item : items) {System.out.println(item.status());}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sQ1YxlWa-1598000722744)(E:/桌面备份/文档/技术资料/elasticsearch 6.8.0全套资料/elasticsearch/笔记/ElasticSearch_6.8.0版本.assets/image-20200702211756304.png)]

1.7 检索记录

查询所有并排序
/*** 查询所有并排序*  ASC 升序  DESC 降序*  addSort("age", SortOrder.ASC)  指定排序字段以及使用哪种方式排序*  addSort("age", SortOrder.DESC) 指定排序字段以及使用哪种方式排序*/@Testpublic void testMatchAllQuery() throws UnknownHostException {TransportClient transportClient = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new ByName("172.16.251.142"), 9300));SearchResponse searchResponse = transportClient.prepareSearch("dangdang").setTypes("book").setQuery(QueryBuilders.matchAllQuery()).addSort("age", SortOrder.DESC).get();SearchHits hits = Hits();System.out.println("符合条件的记录数: "&#alHits);for (SearchHit hit : hits) {System.out.print("当前索引的分数: "&#Score());System.out.print(", 对应结果:=====>"&#SourceAsString());System.out.println(", 指定字段结果:"&#SourceAsMap().get("name"));System.out.println("=================================================");}}
分页查询
	/*** 分页查询*  From 从那条记录开始 默认从0 开始  form = (pageNow-1)*size*  Size 每次返回多少条符合条件的结果  默认10*/@Testpublic void testMatchAllQueryFormAndSize() throws UnknownHostException {TransportClient transportClient = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new ByName("172.16.251.142"), 9300));SearchResponse searchResponse = transportClient.prepareSearch("dangdang").setTypes("book").setQuery(QueryBuilders.matchAllQuery()).setFrom(0).setSize(2).get();SearchHits hits = Hits();System.out.println("符合条件的记录数: "&#alHits);for (SearchHit hit : hits) {System.out.print("当前索引的分数: "&#Score());System.out.print(", 对应结果:=====>"&#SourceAsString());System.out.println(", 指定字段结果:"&#SourceAsMap().get("name"));System.out.println("=================================================");}}
查询返回字段
	/***  查询返回指定字段(source) 默认返回所有*      setFetchSource 参数1:包含哪些字段   参数2:排除哪些字段*      setFetchSource("*","age")  返回所有字段中排除age字段*      setFetchSource("name","")  只返回name字段*      setFetchSource(new String[]{},new String[]{})*/@Testpublic void testMatchAllQuerySource() throws UnknownHostException {TransportClient transportClient = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new ByName("172.16.251.142"), 9300));SearchResponse searchResponse = transportClient.prepareSearch("dangdang").setTypes("book").setQuery(QueryBuilders.matchAllQuery()).setFetchSource("*","age").get();SearchHits hits = Hits();System.out.println("符合条件的记录数: "&#alHits);for (SearchHit hit : hits) {System.out.print("当前索引的分数: "&#Score());System.out.print(", 对应结果:=====>"&#SourceAsString());System.out.println(", 指定字段结果:"&#SourceAsMap().get("name"));System.out.println("=================================================");}}
term查询
	/***  term查询*/@Testpublic void testTerm() throws UnknownHostException {TransportClient transportClient = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new ByName("172.16.251.142"), 9300));TermQueryBuilder queryBuilder = Query("name","中国");SearchResponse searchResponse = transportClient.prepareSearch("dangdang").setTypes("book").setQuery(queryBuilder).get();}
range查询
	/***  rang查询*     lt    小于*     lte   小于等于*     gt    大于*     gte   大于等于*/@Testpublic void testRange() throws UnknownHostException {TransportClient transportClient = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new ByName("172.16.251.142"), 9300));RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("age").lt(45).gte(8);SearchResponse searchResponse = transportClient.prepareSearch("dangdang").setTypes("book").setQuery(rangeQueryBuilder).get();}
prefix查询
 	/***  prefix 前缀查询**/@Testpublic void testPrefix() throws UnknownHostException {TransportClient transportClient = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new ByName("172.16.251.142"), 9300));PrefixQueryBuilder prefixQueryBuilder = QueryBuilders.prefixQuery("name", "中");SearchResponse searchResponse = transportClient.prepareSearch("dangdang").setTypes("book").setQuery(prefixQueryBuilder).get();}
wildcard查询
	/***  wildcardQuery 通配符查询**/@Testpublic void testwildcardQuery() throws UnknownHostException {TransportClient transportClient = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new ByName("172.16.251.142"), 9300));WildcardQueryBuilder wildcardQueryBuilder = QueryBuilders.wildcardQuery("name", "中*");SearchResponse searchResponse = transportClient.prepareSearch("dangdang").setTypes("book").setQuery(wildcardQueryBuilder).get();}
Ids查询
	/*** ids 查询*/@Testpublic void testIds() throws UnknownHostException {TransportClient transportClient = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new ByName("172.16.251.142"), 9300));IdsQueryBuilder idsQueryBuilder = QueryBuilders.idsQuery().addIds("1","2");SearchResponse searchResponse = transportClient.prepareSearch("dangdang").setTypes("book").setQuery(idsQueryBuilder).get();}
fuzzy模糊查询
  	/*** fuzzy 查询*/@Testpublic void testFuzzy() throws UnknownHostException {TransportClient transportClient = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new ByName("172.16.251.142"), 9300));FuzzyQueryBuilder fuzzyQueryBuilder = QueryBuilders.fuzzyQuery("content", "国人");SearchResponse searchResponse = transportClient.prepareSearch("dangdang").setTypes("book").setQuery(fuzzyQueryBuilder).get();}
bool 查询
  	/*** bool 查询*/@Testpublic void testBool() throws UnknownHostException {TransportClient transportClient = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new ByName("172.16.251.142"), 9300));BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();boolQueryBuilder.should(QueryBuilders.matchAllQuery());boolQueryBuilder.mustNot(QueryBuilders.rangeQuery("age").lte(8));boolQueryBuilder.Query("name","中国"));SearchResponse searchResponse = transportClient.prepareSearch("dangdang").setTypes("book").setQuery(boolQueryBuilder).get();}
高亮查询
/*** 高亮查询*  .highlighter(highlightBuilder) 用来指定高亮设置*  requireFieldMatch(false) 开启多个字段高亮*  field 用来定义高亮字段*  preTags("<span style='color:red'>")  用来指定高亮前缀*  postTags("</span>") 用来指定高亮后缀*/@Testpublic void testHighlight() throws UnknownHostException {TransportClient transportClient = new PreBuiltTransportClient(Settings.EMPTY).addTransportAddress(new ByName("172.16.251.142"), 9300));TermQueryBuilder termQueryBuilder = Query("name", "中国");HighlightBuilder highlightBuilder = new HighlightBuilder();quireFieldMatch(false).field("name").field("content").preTags("<span style='color:red'>").postTags("</span>");SearchResponse searchResponse = transportClient.prepareSearch("dangdang").setTypes("book").highlighter(highlightBuilder).highlighter(highlightBuilder).setQuery(termQueryBuilder).get();SearchHits hits = Hits();System.out.println("符合条件的记录数: "&#alHits);for (SearchHit hit : hits) {Map<String, Object> sourceAsMap = SourceAsMap();Map<String, HighlightField> highlightFields = HighlightFields();System.out.println("================高亮之前==========");for(Map.Entry<String,Object> Set()){System.out.println("key: "&#Key() +"   value: "&#Value());}System.out.println("================高亮之后==========");for (Map.Entry<String,Object> Set()){HighlightField highlightField = (Key());if (highlightField!=null){System.out.println("key: "&#Key() +"   value: "+ highlightField.fragments()[0]);}else{System.out.println("key: "&#Key() +"   value: "&#Value());}}}}

本文发布于:2024-01-28 05:42:20,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063917445202.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:操作   西柚仔   Java   ElasticSearch
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23