您的位置:首页 > 编程语言 > Java开发

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();
}

}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: