elasticsearch5.4.0 java开发记录二

来源:互联网 发布:dc元数据 编辑:程序博客网 时间:2024/06/05 00:30

接着我们进行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怎么设置

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




原创粉丝点击