当前位置:   article > 正文

SpringBoot集成ES之ElasticsearchRestTemplate_org.springframework.data.elasticsearch.core.elasti

org.springframework.data.elasticsearch.core.elasticsearchresttemplate' that

之前写的那边那篇SpringBoot集成ES,现在已经不推荐使用的。

建议使用RestHighLevelClient也是官网推荐的。

简单操作使用ElasticsearchRestTemplate就好了,它只是SpringRestHighLevelClient进行了封装

pom.xml

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
  4. </dependency>

yml:

  1. spring:
  2. elasticsearch:
  3. rest:
  4. uris: http://192.168.1.235:9200
  5. username: admin
  6. password: admin

实体:

  1. import lombok.Data;
  2. import org.springframework.data.annotation.Id;
  3. import org.springframework.data.elasticsearch.annotations.Document;
  4. import org.springframework.data.elasticsearch.annotations.Field;
  5. import org.springframework.data.elasticsearch.annotations.FieldType;
  6. @Data
  7. @Document(indexName = "test_user", shards = 3, replicas = 2)
  8. public class TestUser {
  9. @Id
  10. @Field(type = FieldType.Keyword)
  11. private String id;
  12. @Field(type = FieldType.Keyword)
  13. private String name;
  14. @Field(type = FieldType.Integer)
  15. private Integer age;
  16. @Field(type = FieldType.Keyword)
  17. private String sex;
  18. @Field(type = FieldType.Keyword)
  19. private String phone;
  20. }

 

实现简单的操作:

  1. import org.elasticsearch.index.query.BoolQueryBuilder;
  2. import org.elasticsearch.index.query.QueryBuilders;
  3. import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
  4. import org.springframework.data.elasticsearch.core.SearchHits;
  5. import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates;
  6. import org.springframework.data.elasticsearch.core.query.*;
  7. import org.springframework.web.bind.annotation.GetMapping;
  8. import org.springframework.web.bind.annotation.RestController;
  9. import javax.annotation.Resource;
  10. import java.util.HashMap;
  11. @RestController
  12. public class TestUserController {
  13. @Resource
  14. private ElasticsearchRestTemplate elasticsearchRestTemplate;
  15. /**
  16. * 保存覆盖数据
  17. *
  18. * @return
  19. */
  20. @GetMapping("/save")
  21. public Object save() {
  22. TestUser testUser = new TestUser();
  23. testUser.setId("1");
  24. testUser.setName("张三");
  25. testUser.setAge(18);
  26. testUser.setSex("男");
  27. testUser.setPhone("15812341234");
  28. //indexName默认取@Document中的indexName
  29. elasticsearchRestTemplate.save(testUser);
  30. //indexName动态指定--索引如果不存在save会自动创建后在存入数据
  31. elasticsearchRestTemplate.save(testUser, IndexCoordinates.of("test_user_info"));
  32. elasticsearchRestTemplate.save(testUser, IndexCoordinates.of("test_user_info_dd"));
  33. return "ok";
  34. }
  35. /**
  36. * 查询
  37. *
  38. * @return
  39. */
  40. @GetMapping("/search")
  41. public Object search() {
  42. BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
  43. NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder();
  44. builder.withQuery(queryBuilder);
  45. NativeSearchQuery build = builder.build();
  46. SearchHits<TestUser> test_user = elasticsearchRestTemplate.search(build, TestUser.class);
  47. //indexName动态指定
  48. SearchHits<TestUser> test_user_info = elasticsearchRestTemplate.search(build, TestUser.class, IndexCoordinates.of("test_user_info"));
  49. HashMap<Object, Object> objectObjectHashMap = new HashMap<>();
  50. objectObjectHashMap.put("test_user", test_user.getSearchHits());
  51. objectObjectHashMap.put("test_user_info", test_user_info.getSearchHits());
  52. return objectObjectHashMap;
  53. }
  54. /**
  55. * 删除
  56. *
  57. * @return
  58. */
  59. @GetMapping("/delete")
  60. public Object delete() {
  61. //根据ID删除-indexName默认取@Document中的indexName
  62. elasticsearchRestTemplate.delete("1", TestUser.class);
  63. //根据ID删除-indexName动态指定
  64. elasticsearchRestTemplate.delete("1", IndexCoordinates.of("test_user_info"));
  65. //自定义条件、自定义索引
  66. // BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
  67. // queryBuilder.filter(QueryBuilders.matchQuery("name", "张三"));
  68. // NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder();
  69. // builder.withQuery(queryBuilder);
  70. // NativeSearchQuery build = builder.build();
  71. // elasticsearchRestTemplate.delete(build, TestUser.class, IndexCoordinates.of("test_user_info"));
  72. return "ok";
  73. }
  74. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/325753
推荐阅读
相关标签
  

闽ICP备14008679号