elasticsearch5.4.0 java开发记录二

接着我们进行mapping设置

在代码之前我讲下在项目中用到的类型及为什么这样用

long,keyword ,text ,double ,date

使用数字类型long用来存储商品id,keyword 用来存储字符类型,主要用于精确值查询,不用分词效果的字段

text 字符类型 该字段需要分词,double类型主要用于价格的存储,date 类型用于时间的存储。

elasticsearch java 代码如下:

private String getMapping(String indexName) {
		try {
			XContentBuilder builder = XContentFactory.jsonBuilder();

			builder.startObject()
					.startObject("properties")
					// 数字类型 商品ID
					.startObject("productId")
					.field("type", "long")
					.field("index", false)
					.endObject()
					// 精确查询 
					.startObject("productSn")
					.field("type", "keyword")
					.endObject()
					// 分词 商品名称
					.startObject("productName")
					.field("type", "text")
					.field("analyzer", "ik_max_word")
					.field("search_analyzer", "ik_max_word")
					.endObject()
					// 价格 double类型
					.startObject("showPrice")
					.field("type", "double")
					.endObject()
					// 活动价
					.startObject("activityPrice")
					.field("type", "double")
					.field("index", false)
					.endObject()
					// 含税成本价
					.startObject("taxIncludedPrice")
					.field("type", "double")
					.field("index", false)
					.field("store", false)
					.endObject()
					// 不含税成本价
					.startObject("taxFreePrice")
					.field("type", "double")
					.field("index", false)
					.field("store", false)
					.endObject()
					// 商品创建时间createTime
					.startObject("createTime")
					.field("type", "date")
					.field("format", "yyyy-MM-dd HH:mm:ss")
					.field("store", false)
					.endObject()
					// brandEnName
					.startObject("brandEnName")
					.field("type", "keyword")
					.field("store", false)
					.endObject()
					// brandChName
					.startObject("brandChName")
					.field("type", "text")
					.field("analyzer", "ik_max_word")
					.field("search_analyzer", "ik_max_word")
					.endObject()
					// 编码 精确匹配
					.startObject("brandCode")
					.field("type", "keyword")
					.endObject()

					.startObject("brandCodeAndName")
					.field("type", "keyword")
					.endObject()

					// 尺码 itemSize
					.startObject("itemSize")
					.field("type", "keyword")
					.field("index", false)
					.endObject()
					// 库存 stock
					.startObject("stock")
					.field("type", "long")
					.field("index", false)
					.endObject()

					// 佣金率 commissionRate
					.startObject("commissionRate")
					.field("type", "double")
					.field("index", false)
					.endObject()

					// vendorCode
					.startObject("vendorCode")
					.field("type", "keyword")
					.endObject()
					// vendorName
					.startObject("vendorName")
					.field("type", "keyword")
					.endObject()

					.startObject("vendorCodeName")
					.field("type", "keyword")
					.endObject()

					// vendorGroup
					.startObject("vendorGroup")
					.field("type", "keyword")
					.endObject()
					// spaceFlag
					.startObject("spaceFlag")
					.field("type", "keyword")
					.endObject()

					// onsaleState
					.startObject("onsaleState")
					.field("type", "long")
					.endObject()
					// onsaleTime
					.startObject("onsaleTime")
					.field("type", "date")
					.field("format", "yyyy-MM-dd HH:mm:ss")
					.endObject()

					// 关键字
					.startObject("productKeywords")
					.field("type", "text")
					.field("analyzer", "ik_max_word")
					.field("search_analyzer", "ik_max_word")
					.endObject()
					// oneClassCode
					.startObject("oneClassCode")
					.field("type", "keyword")
					.endObject()

					// oneClassName
					.startObject("oneClassName")
					.field("type", "keyword")
					.endObject()

					.startObject("classOneCodeName")
					.field("type", "keyword")
					.endObject()

					// twoClassCode
					.startObject("twoClassCode")
					.field("type", "keyword")
					.endObject()

					// twoClassName
					.startObject("twoClassName")
					.field("type", "keyword")
					.endObject()

					.startObject("classTwoCodeName")
					.field("type", "keyword")
					.endObject()

					// threeClassCode
					.startObject("threeClassCode")
					.field("type", "keyword")
					.endObject()

					// threeClassName
					.startObject("threeClassName")
					.field("type", "keyword")
					.endObject()

					.startObject("classThreeCodeName")
					.field("type", "keyword")
					.endObject()

					// fourClassCode
					.startObject("fourClassCode")
					.field("type", "keyword")
					.endObject()

					// fourClassName
					.startObject("fourClassName")
					.field("type", "keyword")
					.endObject()

					.startObject("classFourCodeName")
					.field("type", "keyword")
					.endObject()

					// imgUrl
					.startObject("imgUrl")
					.field("type", "keyword")
					.endObject()

					// sevendaysSaleAmount
					.startObject("sevendaysSaleAmount")
					.field("type", "double")
					.endObject()

					// sevendaysSaleNumber
					.startObject("sevendaysSaleNumber")
					.field("type", "long")
					.endObject()

					// fifteendaysSaleAmount
					.startObject("fifteendaysSaleAmount")
					.field("type", "double")
					.endObject()

					// fifteendaysSaleNumber
					.startObject("fifteendaysSaleNumber")
					.field("type", "long")
					.endObject()

					// thirtydaysSaleAmount
					.startObject("thirtydaysSaleAmount")
					.field("type", "double")
					.endObject()

					// thirtydaysSaleNumber
					.startObject("thirtydaysSaleNumber")
					.field("type", "long")
					.endObject()

					// sixtydaysSaleAmount
					.startObject("sixtydaysSaleAmount")
					.field("type", "double")
					.endObject()

					// sixtydaysSaleNumber
					.startObject("sixtydaysSaleNumber")
					.field("type", "long")
					.endObject()

					// ninetydaysSaleAmount
					.startObject("ninetydaysSaleAmount")
					.field("type", "double")
					.endObject()

					// ninetydaysSaleNumber
					.startObject("ninetydaysSaleNumber")
					.field("type", "long")
					.endObject()
					// loadDate
					.startObject("loadDate")
                                        .field("type", "date")
					.field("format", "yyyy-MM-dd HH:mm:ss")
                                        .endObject()
					.endObject()
					.endObject();
			LOGGER.warn("创建索引【{}】的mapping success:【{}】", indexName,
					builder.string());
			return builder.string();
		} catch (IOException e) {
			LOGGER.warn("创建索引【{}】的mapping fail:【{}】", indexName, e);
			e.printStackTrace();
		}
		return null;
	}
该方法得到是json格式的字符串,其中代码一看就明白,后面还会添加拼音搜索 mapping怎么设置

第二部分到此就结束了,如上有错误之处,不足之处望之处,多谢。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值