ElasticSearch集成SpringBoot
2019-01-25 13:40
141 查看
Springboot启动之后自动建索引库
[code]package com.danganku.file.pojo; import java.io.Serializable; import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Mapping; /** * 索引实体类 * * @author yunxun * */ // indexName 索引库 ,type 类型 @Mapping(mappingPath = "articlesearch_mapping.json") @Document(indexName = "danganku", type = "archive_files_index") public class ArchiveFileIndexES implements Serializable { private static final long serialVersionUID = -1372321009258217217L; private Integer id; //@Field(index = false) private Integer groupid; // 文件路径 //@Field(index = false,type = FieldType.Auto) private String path; /* Springboot 2.0版本之后Field不生效 * index 是否可以通过这个字段是否查询 analyzer 存储的时候用哪个分词器 searchAnalyzer 搜索的时候指定分词 文件名 */ //@Field(index = true, analyzer = "ik_max_word", searchAnalyzer = "ik_max_word") private String filename; // 文件内容 //@Field(index = true, analyzer = "ik_max_word", searchAnalyzer = "ik_max_word") private String filecontent; // 大图路径 //@Field(index = false) private String bigpath; // 大图名字 //@Field(index = false) private String bigfilename; // 小图名字 //@Field(index = false) private String smallfilename; // 小图路径 //@Field(index = false) private String smallpath; //文件注入信息Id private Integer fileid; //人物 private String personnel; //地点 private String address; //时间 private Integer sdate; //详细 private String details; //标题 private String imagedescription; //作者 private String artist; //文件名拼音 private String pinyin; //状态 //@Field(index = false) private int state; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Integer getGroupid() { return groupid; } public void setGroupid(Integer groupid) { this.groupid = groupid; } public String getPath() { return path; } public void setPath(String path) { this.path = path; } public String getFilename() { return filename; } public void setFilename(String filename) { this.filename = filename; } public String getFilecontent() { return filecontent; } public void setFilecontent(String filecontent) { this.filecontent = filecontent; } public String getBigpath() { return bigpath; } public void setBigpath(String bigpath) { this.bigpath = bigpath; } public String getBigfilename() { return bigfilename; } public void setBigfilename(String bigfilename) { this.bigfilename = bigfilename; } public String getSmallfilename() { return smallfilename; } public void setSmallfilename(String smallfilename) { this.smallfilename = smallfilename; } public String getSmallpath() { return smallpath; } public void setSmallpath(String smallpath) { this.smallpath = smallpath; } public Integer getFileid() { return fileid; } public void setFileid(Integer fileid) { this.fileid = fileid; } public String getPersonnel() { return personnel; } public void setPersonnel(String personnel) { this.personnel = personnel; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public Integer getSdate() { return sdate; } public void setSdate(Integer sdate) { this.sdate = sdate; } public String getDetails() { return details; } public void setDetails(String details) { this.details = details; } public String getImagedescription() { return imagedescription; } public void setImagedescription(String imagedescription) { this.imagedescription = imagedescription; } public String getArtist() { return artist; } public void setArtist(String artist) { this.artist = artist; } public int getState() { return state; } public void setState(int state) { this.state = state; } public String getPinyin() { return pinyin; } public void setPinyin(String pinyin) { this.pinyin = pinyin; } @Override public String toString() { return "ArchiveFileIndexES [id=" + id + ", groupid=" + groupid + ", path=" + path + ", filename=" + filename + ", filecontent=" + filecontent + ", bigpath=" + bigpath + ", bigfilename=" + bigfilename + ", smallfilename=" + smallfilename + ", smallpath=" + smallpath + ", fileid=" + fileid + ", personnel=" + personnel + ", address=" + address + ", sdate=" + sdate + ", details=" + details + ", imagedescription=" + imagedescription + ", artist=" + artist + ", pinyin=" + pinyin + ", state=" + state + "]"; } }
articlesearch_mapping.json
[code]{ "archive_files_index": { "properties": { "id": { "type": "integer" }, "groupid": { "type": "integer", "index": false }, "path": { "type": "keyword", "index": false }, "filename": { "type": "text", "analyzer": "ik_max_word", "search_analyzer": "ik_max_word" }, "filecontent": { "analyzer": "ik_max_word", "type": "text", "search_analyzer": "ik_max_word" }, "bigpath": { "type": "keyword", "index": false }, "bigfilename": { "type": "keyword", "index": false }, "smallfilename": { "type": "keyword", "index": false }, "smallpath": { "type": "keyword", "index": false }, "fileid": { "type": "integer", "index": false }, "personnel": { "analyzer": "ik_max_word", "type": "text", "search_analyzer": "ik_max_word" }, "address": { "analyzer": "ik_max_word", "type": "text", "search_analyzer": "ik_max_word" }, "sdate": { "type": "integer", "index": false }, "details": { "analyzer": "ik_max_word", "type": "text", "search_analyzer": "ik_max_word" }, "imagedescription": { "analyzer": "ik_max_word", "type": "text", "search_analyzer": "ik_max_word" }, "artist": { "analyzer": "ik_max_word", "type": "text", "search_analyzer": "ik_max_word" }, "pinyin": { "analyzer": "pinyin", "type": "text", "search_analyzer": "pinyin" }, "state": { "type": "integer", "index": false } } } }
全文检索查询
[code]import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.stereotype.Component; import com.danganku.file.pojo.ArchiveFileIndexES; /** * ES全文检索接口 * @author yunxun * */ @Component public interface DanganRepository extends ElasticsearchRepository<ArchiveFileIndexES,Integer>{ /** 按时间排序 * @param fileName 文件名 * @param FileContent 文件内容 * @param personnel 人物 * @param address 地址 * @param details 人物,时间,地点 * @param pinyin 拼音 * @param pageable 分页参数 * @return Page<ArchiveFileIndexES>findByAvailableTrueOrderByNameDesc */ Page<ArchiveFileIndexES> findByFilenameOrFilecontentOrPersonnelOrAddressOrDetailsOrPinyinOrderBySdate (String fileName,String fileContent,String personnel,String address,String details,String pinyin,Pageable pageable);
[code]@Controller @RequestMapping public class ESController { @Autowired private DanganRepository danganRepository ; @GetMapping("pageQuery") @ResponseBody public List<ArchiveFileIndexES> pageQuery(String query) { System.out.println("查询条件:"+query); Pageable request = new PageRequest(0,pageSize); Page<ArchiveFileIndexES> dang=danganRepository.findByFilenameOrFilecontentOrPersonnelOrAddressOrDetailsOrPinyinOrderBySdate (query,query,query,query,query,query,request); System.out.println("总页数:"+dang.getTotalPages()); System.out.println("总共有:"+dang.getTotalElements()+"条记录"); System.out.println("每页大小:"+dang.getSize()); System.out.println("当前页:第"+(dang.getNumber()+1)+"页"); System.out.println(dang.getNumberOfElements()); dang.getContent().forEach(System.out::println); return dang.getContent(); } }
相关文章推荐
- ElasticSearch学习 - (五)SpringBoot集成ElasticSearch5.X
- elasticsearch-windows-配置 及集成springboot-data
- SpringBoot集成ElasticSearch
- springboot 集成 elasticsearch(maven项目)
- springboot 集成elasticsearch5.4.3
- springboot简易集成ElasticSearch
- 使用Logstash同步数据至Elasticsearch,Spring Boot中集成Elasticsearch实现搜索
- ElasticSearch与Spring Boot集成问题
- 详解spring-boot集成elasticsearch及其简单应用
- (Mac下springBoot集成elastic)一:Mac下超详细小白式elasticsearch安装
- Spring Boot集成ElasticSearch实现搜索引擎的示例
- springboot elasticsearch 集成注意事项
- SpringBoot -- 集成Elasticsearch
- spring-boot集成elasticsearch并实现简单的增删改查
- spring boot 集成 elasticsearch 5.x
- Springboot2.0 集成 Elasticsearch 6.x 未添加 transport-netty4-client 依赖 启动时报错
- Elasticsearch 07 使用SpringBoot集成Elasticsearch
- springboot 集成elasticsearch
- SpringBoot -- 集成Elasticsearch
- SpringBoot和MyBatis集成案例(学习笔记)