Browse Source

Merge branch 'dev-1.13.0' of http://192.168.1.220:10080/EHR/svr-quota into dev-1.13.0

Airhead 6 years ago
parent
commit
f84d9bd253

+ 13 - 1
src/main/java/com/yihu/quota/model/rest/FieldInfo.java

@ -1,5 +1,7 @@
package com.yihu.quota.model.rest;
import java.util.List;
/**
 * ElasticSearch 字段信息
 * Created by janseny on 2018/9/17.
@ -7,7 +9,8 @@ package com.yihu.quota.model.rest;
public class FieldInfo {
    private String field;//名称
    private String dataType;//数据类型
    private int participle;//分词
    private int participle;//分词 1 string  not_analyzed 不分词  2 分词   其他 keyword  not_analyzed
    private List<FieldInfo> fieldInfos ;//子属性集合
    public String getField() {
@ -33,4 +36,13 @@ public class FieldInfo {
    public void setParticiple(int participle) {
        this.participle = participle;
    }
    public List<FieldInfo> getFieldInfos() {
        return fieldInfos;
    }
    public void setFieldInfos(List<FieldInfo> fieldInfos) {
        this.fieldInfos = fieldInfos;
    }
}

+ 36 - 54
src/main/java/com/yihu/quota/util/ElasticSearchHandler.java

@ -154,8 +154,7 @@ public class ElasticSearchHandler {
            CreateIndexRequestBuilder cib = client.admin()
                    .indices().prepareCreate(index);
            mapping = XContentFactory.jsonBuilder()
                    .startObject()
                    .startObject("properties"); //设置之定义字段
                    .startObject().startObject("properties"); //设置之定义字段
            for(FieldInfo info : fieldInfoList){
                String field = info.getField();
@ -167,37 +166,39 @@ public class ElasticSearchHandler {
                Integer participle = info.getParticiple();
                if("string".equals(dataType)){
                    if(participle == 1) {
                        mapping.startObject(field)
                                .field("type","string")
                                .field("index","not_analyzed")
                                .endObject();
                    }else if(participle == 2){
                        mapping.startObject(field)
                                .field("type","text")
                                .field("analyzer","ik_max_word")
                                .endObject();
                    }else if(participle == 3){
                        mapping.startObject(field)
                                .field("type","text")
                                .field("analyzer","ik_smart")
                                .endObject();
                        mapping.startObject(field).field("type", "string").field("index", "not_analyzed").endObject();
                    }else if(participle == 2) {
                        mapping.startObject(field).field("type", "string").endObject();
                    }else {
                        mapping.startObject(field)
                                .field("type","keyword")
                                .field("index","not_analyzed")
                                .endObject();
                        mapping.startObject(field).field("type", "keyword").field("index", "not_analyzed").endObject();
                    }
                }else if("date".equals(dataType)){
                    mapping.startObject(field)
                            .field("type",dataType)
                            .field("format","yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis")
                            .endObject();
                    mapping.startObject(field).field("type", dataType).field("format", "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis").endObject();
                }else if("nested".equals(dataType)){//子集属性
                    mapping.startObject(field).startObject("properties");
                    //子属性
                    List<FieldInfo> childFieldList = info.getFieldInfos();
                    for(FieldInfo child : childFieldList){
                        String childField = child.getField();
                        String childDataType = child.getDataType();
                        int childParticiple = child.getParticiple();
                        if("string".equals(childDataType)){
                            if(childParticiple == 1) {
                                mapping.startObject(childField).field("type", "string").field("index", "not_analyzed").endObject();
                            }else if(childParticiple == 2) {
                                mapping.startObject(childField).field("type", "string").endObject();
                            }else {
                                mapping.startObject(childField).field("type", "keyword").field("index", "not_analyzed").endObject();
                            }
                        }else if("date".equals(dataType)){
                            mapping.startObject(childField).field("type", childDataType).field("format", "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis").endObject();
                        }else {
                            mapping.startObject(childField) .field("type", childDataType).endObject();
                        }
                    }
                    mapping.endObject().endObject();
                }else {
                    mapping.startObject(field)
                            .field("type",dataType)
                            .field("index","not_analyzed")
                            .endObject();
                    mapping.startObject(field) .field("type", dataType).endObject();
                }
            }
            mapping.endObject()
@ -226,39 +227,20 @@ public class ElasticSearchHandler {
                .startObject()
                    .startObject("properties") //设置之定义字段
                        .startObject("id")//字段id
                        .field("type", "integer")//设置数据类型
                        .field("index", "not_analyzed")
                        .endObject()
                        .startObject("classs")
                        .field("type", "integer")
                        .field("index", "not_analyzed")
                        .endObject()
                        .startObject("id") .field("type", "integer").field("index", "not_analyzed").endObject()
                        .startObject("classs").field("type", "integer").field("index", "not_analyzed").endObject()
                        .startObject("score")
                        .field("type", "integer")
                        .field("index", "not_analyzed")
                        .endObject()
                        .startObject("score").field("type", "integer").field("index", "not_analyzed").endObject()
                        //子属性
                        .startObject("student")
                            .startObject("properties")
                                .startObject("name")
                                .field("type", "string")
                                .field("index", "not_analyzed")
                                .endObject()
                                .startObject("age")
                                .field("type", "string")
                                .endObject()
                                .startObject("name").field("type", "string").field("index", "not_analyzed").endObject()
                                .startObject("age").field("type", "string").endObject()
                            .endObject()
                        .endObject()
                        .startObject("updatetime")
                        .field("type","integer")
                        .field("index","not_analyzed")
                        .endObject()
                        .startObject("updatetime").field("type", "date").field("format", "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis").endObject()
                    .endObject()
                .endObject();