初始化

1.添加依赖

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

2.创建索引库

  • 先创建好索引库以及映射信息
  1. PUT /demo2
  2. {
  3. "mappings": {
  4. "properties":{
  5. "title":{
  6. "type":"text",
  7. "analyzer":"ik_max_word"
  8. },
  9. "images":{
  10. "type":"keyword",
  11. "index":"false"
  12. },
  13. "price":{
  14. "type":"float"
  15. },
  16. "type":{
  17. "type":"keyword"
  18. },
  19. "createDate":{
  20. "type":"date"
  21. }
  22. }
  23. }
  24. }

3.创建数据类

  • 这里指定索引库为demo2
  1. @Data
  2. @AllArgsConstructor
  3. @NoArgsConstructor
  4. @Document(indexName = "demo2")
  5. public class Goods implements Serializable {
  6. private static final long serialVersionUID = 1L;
  7. @Id
  8. private Integer id;
  9. private String title;
  10. private Double price;
  11. private String type;
  12. private String images;
  13. private Date createDate;
  14. }

4.创建配置

  1. @Configuration
  2. public class RestClientConfig extends AbstractElasticsearchConfiguration {
  3. @Override
  4. @Bean
  5. public RestHighLevelClient elasticsearchClient() {
  6. final ClientConfiguration clientConfiguration = ClientConfiguration.builder()
  7. .connectedTo("192.168.0.102:9200")
  8. .build();
  9. return RestClients.create(clientConfiguration).rest();
  10. }
  11. }

Repository

1.创建接口

  1. public interface GoodsRepository extends ElasticsearchRepository<Goods, Long> {
  2. }

2.保存数据

  1. @Autowired
  2. GoodsRepository goodsRepository;
  3. @Test
  4. public void addDocument(){
  5. Goods goods = new Goods(2,"华为手机",6999.0,"phone","huawei.jpg",new Date());
  6. goodsRepository.save(goods);
  7. }

3.高亮显示

  • 接口添加方法
  1. @Highlight(
  2. fields = {@HighlightField(name = "title")},
  3. parameters = @HighlightParameters(
  4. preTags = {"<font style='color:red'>"}, postTags = {"</font>"})
  5. )
  6. List<SearchHit<Goods>> findByTitle(String title);
  • 调用方法
  1. @Test
  2. public void findByTitle(){
  3. List<SearchHit<Goods>> phone = goodsRepository.findByTitle("手机");
  4. phone.forEach(s->{
  5. System.out.println(s.toString());
  6. });
  7. }

原生查询

1.新增数据

  1. @Autowired
  2. private ElasticsearchOperations elasticsearchOperations;
  3. @Test
  4. public void testCreateIndex() {
  5. Goods goods = new Goods(1,"小米手机",2999.0,"phone","mi.jpg",new Date());
  6. IndexCoordinates indexCoordinates =
  7. elasticsearchOperations.getIndexCoordinatesFor(goods.getClass());
  8. IndexQuery indexQuery = new IndexQueryBuilder()
  9. .withId(goods.getId().toString())
  10. .withObject(goods)
  11. .build();
  12. String documentId = elasticsearchOperations.index(indexQuery, indexCoordinates);
  13. System.out.println(documentId);
  14. }

官方文档 - https://docs.spring.io/spring-data/elasticsearch/docs/4.1.6/reference/html/#reference

更新时间:{docsify-updated}