Elasticsearch开发流程⼀.创建Es实体类,并且标注好注解
@Document(indexName = "fhcloud-house", type = "rentHouseInfo", createIndex = false)
public class RentHouseInfo implements Serializable {
/**bigdecimal转换为integer
* id
*/
@Field(type = FieldType.Keyword, store = true)
private String id;
/**
* 门牌号
*/
@Field(type = FieldType.Text, store = true)
private String houseNum;
/**
* 楼牌号
*/
@Field(type = FieldType.Long, store = true)
private Integer houseNo;
/**
* 单元号
*/
@Field(type = FieldType.Long, store = true)
private Integer houseUnit;
/**
* 房门号
*/
@Field(type = FieldType.Long, store = true)
private Integer doorNo;
/**
* 房源编号
*/
@Field(type = FieldType.Keyword, store = true)
private String serialNum;
/
**
* 状态(1有效 2已售 3⽆效 4已租 5预定 6我租 7我售 8未知 9暂缓 10待审核)
*/
@Field(type = FieldType.Long, store = true)
private Integer status;
/**
* 楼层(x/yF)
*/
@Field(type = FieldType.Long, store = true)
private Integer floor;
/**
* 户型(x-x-x-x)
*/
@Field(type = FieldType.Keyword, store = true)
private String houseType;
/**
* 朝向
*/
@Field(type = FieldType.Keyword, store = true)
private String orientation;
/**
* 房龄
*/
private Double houseAcreage;
/**
* 付款⽅式(1:⽉付,2:季付,3:半年付,4:年付)
*/
@Field(type = FieldType.Double, store = true)
private BigDecimal downPayment;
/**
* 单价
*/
@Field(type = FieldType.Double, store = true)
private BigDecimal houseUnitPrice;
/**
* 总价
*/
@Field(type = FieldType.Double, store = true)
private BigDecimal houseTotalPrice;
/**
* 业主电话
*/
@Field(type = FieldType.Keyword, store = true)
private String landlordTel;
/
**
* 房源备注
*/
@Field(type = FieldType.Text, store = true)
private String houseNote;
/**
* 逾期次数
*/
@Field(type = FieldType.Long, store = true)
private Integer overdueCount;
/**
* 房源挂牌
*/
@Field(type = FieldType.Long, store = true)
private Integer listing;
/**
* 装修等级(1⽑坯 2清⽔ 3简装 4中装 5精装 6豪装)
*/
@Field(type = FieldType.Long, store = true)
private Integer decorationLevel;
/**
* 归属经纪⼈
*/
@Field(type = FieldType.Keyword, store = true)
private String belongBroker;
/**
* 归属店铺
*/
@Field(type = FieldType.Keyword, store = true)
private String belongStop;
/**
* 归属商圈(商圈id)
*/
@Field(type = FieldType.Keyword, store = true)
private String tradId;
/**
* 楼盘id(楼盘名称、⽤途、楼盘简拼、楼盘地址、楼盘备注)    */
private String schoolId;
/**
* 类型
*/
@Field(type = FieldType.Long, store = true)
private Integer type;
/**
* 公私
*/
@Field(type = FieldType.Long, store = true)
private Integer publicPrivate;
/**
* 委托⽇期
*/
@Field(type = FieldType.Date, store = true)
private Date entrustTime;
/**
* 审核状态
*/
@Field(type = FieldType.Long, store = true)
private Integer checkStatus;
/**
* 特性(0唯⼀住房 1满五年 2满两年 3双⽓ 4普通房 5优质房 6聚焦房 7钥匙)
*/
@Field(type = FieldType.Text, store = true, analyzer = "ik_max_word", searchAnalyzer = "ik_max_word")    private String speciality;
//以下为搜索额外封装数据字段
/**
* 图⽚名称
*/
@Field(type = FieldType.Keyword, store = true, index = false)
private String imageName;
/**
* 图⽚类型(主卧图次卧图客厅图厨房图卫⽣间图)
*/
@Field(type = FieldType.Keyword, store = true, index = false)
private String imageType;
/**
* 图⽚路径
*/
@Field(type = FieldType.Keyword, store = true, index = false)
private String imageUrl;
/**
* 楼盘名称
*/
@Field(type = FieldType.Text, store = true, analyzer = "ik_smart", searchAnalyzer = "ik_smart")
private String houseName;
/**
* 物业⽤途 0住宅 1商住 2商铺 3写字楼 4⼚房 5车位 6地下室 7公寓 8别墅
*/
@Field(type = FieldType.Text, store = true, analyzer = "ik_max_word", searchAnalyzer = "ik_max_word")    private String propertyUse;
/**
* 楼盘拼⾳简写
*/
@Field(type = FieldType.Keyword, store = true)
private String pinyinInitials;
@Field(type = FieldType.Text, store = true, analyzer = "ik_smart", searchAnalyzer = "ik_smart")
private String address;
/**
* 楼盘备注
*/
@Field(type = FieldType.Text, store = true, analyzer = "ik_smart", searchAnalyzer = "ik_smart")
private String houseDescribe;
/
**
* 所属经纪⼈姓名
*/
@Field(type = FieldType.Keyword, store = true)
private String brokerName;
/**
* 所属店铺名称
*/
@Field(type = FieldType.Keyword, store = true)
private String deptName;
/**
* 归属地区(归属商圈上级id)
*/
@Field(type = FieldType.Keyword, store = true)
private String superTradId;
@Field(type = FieldType.Text, index = false, analyzer = "ik_smart", searchAnalyzer = "ik_smart")
private String searchKeyword;
/**
* 租房类型1:整租,2:合租,3:均可
*/
@Field(type = FieldType.Long, store = true)
private Integer rentType;
private Date startTime;
private Date endTime;
Spring Data通过注解来声明字段的映射属性,有下⾯的三个注解:
@Document 作⽤在类,标记实体类为⽂档对象,⼀般有两个属性
indexName:对应索引库名称
type:对应在索引库中的类型
shards:分⽚数量,默认5
replicas:副本数量,默认1
@Id 作⽤在成员变量,标记⼀个字段作为id主键
@Field 作⽤在成员变量,标记为⽂档的字段,并指定字段映射属性:
type:字段类型,是枚举:FieldType,可以是text、long、short、date、integer、object等
text:存储数据时候,会⾃动分词,并⽣成索引
keyword:存储数据时候,不会分词建⽴索引
Numerical:数值类型,分两类
基本数据类型:long、interger、short、byte、double、float、half_float
浮点数的⾼精度类型:scaled_float
需要指定⼀个精度因⼦,⽐如10或100。elasticsearch会把真实值乘以这个因⼦后存储,取出时再还原。
Date:⽇期类型
elasticsearch可以对⽇期格式化为字符串存储,但是建议我们存储为毫秒值,存储为long,节省空间。
index:是否索引,布尔类型,默认是true
store:是否存储,布尔类型,默认是false
analyzer:分词器名称,这⾥的ik_max_word即使⽤ik分词器
⼆.在创建Mapper接⼝的时候,使接⼝继承ElasticsearchRepository<;实体类,主键数据类
型>
创建索引
public void createIndex() {
// 创建索引,会根据Item类的@Document注解信息来创建
// 配置映射,会根据Item类中的id、Field等字段来⾃动完成映射
esTemplate.putMapping(RentHouseInfo.class);
}
删除索引
public void deleteIndex() {
esTemplate.deleteIndex(RentHouseInfo.class);
// 根据索引名字删除
//esTemplate.deleteIndex("rentHouseInfo");
}
//两种删除的⽅式,⼀种可以通过实体类(实体类需要增加springdata的elasticsearch的相关注解) //另⼀种是通过创建的索引名称

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。