yml配置:org.springframework.boot spring-boot-starter-data-elasticsearch
spring: data: elasticsearch: elasticsearch: cluster-nodes: localhost:9200 cluster-name: my-es1.创建实体Bean对象
在Elasticsearch 6.X 版本中,不建议使用type,而且在7.X版本中将会彻底废弃type,所以此处我只指定了indexName,没有指定type。这里,一个journal代表一期彩票,同时代表一条索引记录。
类比关系型数据库的话,Index相当于表,document相当于记录
package com.yl.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import org.springframework.data.elasticsearch.annotations.document; import java.time.LocalDateTime; import java.util.List; @TableName("sys_journal") @Data @document(indexName = "journal") //es索引,索引名必须小写 public class Journal { private Long id; private String title; //标题 private String titleDesc; //标题全本 private String issue; //期号 唯一 @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8") private LocalDateTime date; //期刊日期 yyyy-MM-dd @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8") private LocalDateTime dateStr; //期刊日期字符串格式 private String url; //版面地址 private String stageDesc; //版面备注 private Integer type; //期刊类型:.1:中国体彩报 2.其他 private Integer status; //状态:1.正常 2.删除 @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8") private LocalDateTime grabDate; //抓取时间 yyyy-MM-dd HH:mm:ss @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8") private LocalDateTime createdAt; //创建时间 yyyy-MM-dd HH:mm:ss @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8") private LocalDateTime updatedAt; //更新时间 yyyy-MM-dd HH:mm:ss @TableField(exist = false) private List2.然后,需要自己定义一个接口,并继承ElasticsearchRepositoryjournalPages; }
package com.yl.repository; import com.yl.entity.Journal; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; public interface JournalRepository extends ElasticsearchRepository3.接下来,定义service接口{ }
package com.yl.service; import com.alibaba.fastjson.JSONObject; import com.yl.entity.BlogModel; import org.springframework.data.domain.Page; import org.springframework.data.elasticsearch.annotations.Query; import java.util.List; import java.util.Optional; public interface JournalService { long count(); Journal save(Journal journal); void delete(Journal journal); IterablefindAll(); List findByTitle(String name); Page pageQuery(JSonObject param); Optional findById(String id); void deleteById(String id); Page findAll(Integer pageIndex, Integer pageSize); //自定义方法 List findByTitleLike(String keyword); //自定义方法 List findByTitleCustom(String keyword); }
package com.yl.service.impl; import com.alibaba.fastjson.JSONObject; import com.yl.repository.JournalRepository; import com.yl.entity.Journal; import com.yl.service.JournalService; import org.elasticsearch.index.query.MatchQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.elasticsearch.core.query.NativeSearchQuery; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Optional; @Service public class JournalServiceImpl implements JournalService { @Autowired private JournalRepository journalRepository; @Autowired ElasticsearchRestTemplate elasticsearchRestTemplate; @Override public long count() { return journalRepository.count(); } @Override public Journal save(Journal journal) { return journalRepository.save(journal); } @Override public void delete(Journal journal) { journalRepository.delete(journal); } @Override public Optional4.控制层findById(String id) { return journalRepository.findById(id); } @Override public void deleteById(String id) { journalRepository.deleteById(id); } @Override public Iterable findAll() { return journalRepository.findAll(); } @Override public List findByTitle(String title) { List list = new ArrayList<>(); MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("title", title); Iterable iterable =journalRepository.search(matchQueryBuilder); iterable.forEach(e->list.add(e)); return list; } @Override public Page pageQuery(JSonObject param) { String indexName = param.getString("indexName"); Integer page = param.getInteger("page"); Integer size = param.getInteger("size"); NativeSearchQuery searchQuery=new NativeSearchQueryBuilder() .withQuery(QueryBuilders.matchPhraseQuery("title", indexName)) .withPageable(PageRequest.of(page, size)) .build(); return journalRepository.search(searchQuery); } @Override public List findByTitleLike(String keyword) { return journalRepository.findByTitleLike(keyword); } @Override public List findByTitleCustom(String keyword) { return journalRepository.findByTitleCustom(keyword); } @Override public Page findAll(Integer pageIndex, Integer pageSize) { Page page = journalRepository.findAll(PageRequest.of(pageIndex, pageSize)); return page; } }
package com.yl.controller; import com.alibaba.fastjson.JSONObject; import com.yl.repository.JournalRepository; import com.yl.common.lang.Result; import com.yl.entity.BlogModel; import com.yl.entity.Journal; import org.elasticsearch.index.query.MatchQueryBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @RestController @RequestMapping("/journal") public class JournalController { @Autowired private JournalService journalService; @GetMapping("/add") public Result add(){ Journal journal = new Journal(); journal.setUrl("htttp://baidu.com"); journal.setCreatedAt(LocalDateTime.now()); journal.setTitle(" 文章与专著 2021-12-10 15:54 GB/T 14467—2021《中国植物分类与代码》国家标准正式出版发行"); journal.setTitleDesc("中华人民共和国"); return Result.succ(journalService.save(journal)); } @GetMapping("/findByName") public Result findByName(String title){ List注意:指定数据类型就在bean对象对应字段添加类型限定注解@Field(type = FieldType.Long) 添加的数据 二、查看Elasticsearch中添加的索引数据 1查看添加的索引数据list = new ArrayList<>(); MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("title",title); return Result.succ( journalService.search(matchQueryBuilder)); } @PostMapping("/page") public Result page(@RequestBody JSonObject param){ return Result.succ(journalService.pageQuery(param)); } @GetMapping("/get/{id}") public Result getById(@PathVariable String id) { if (StringUtils.isEmpty(id)) return Result.fail("id为null"); Optional blogModelOptional = journalService.findById(id); if (blogModelOptional.isPresent()) { Journal blogModel = blogModelOptional.get(); return Result.succ(blogModel); } return Result.fail("未查询到相关数据"); } @GetMapping("/findAll") public Result findAll() { Iterable iterable = journalService.findAll(); List list = new ArrayList<>(); iterable.forEach(list::add); return Result.succ(list); } @PostMapping("/updateById") public Result updateById(@RequestBody Journal journal) { String id = journal.getId(); if (StringUtils.isEmpty(id)) { return Result.fail(""); } return Result.succ(journalService.save(journal)); } @GetMapping("/deleteById/{id}") public Result deleteById(@PathVariable String id) { if (StringUtils.isEmpty(id)) { return Result.fail("id为null"); } journalService.deleteById(id); return Result.succ("删除成功"); } }
打开折叠框,选择Stack_management
2.点击Index Patterns,然后选择Create Index Patterns 3.输入你需要看的索引名字,点击Create Index Pattern 4.点击折叠框,选DisCover 5.选择这个折叠框就可以自由切换了 三、删除索引 1. 打开折叠框,选择Stack_management 2.选中Save Objects,x选中要删除的索引名,删除欢迎分享,转载请注明来源:内存溢出
评论列表(0条)