sunty
2019-11-19 bbe429af4f2a038627eaff69b38a58dabc2f4661
update esSearch
2个文件已修改
58 ■■■■■ 已修改文件
controllers/esSearch.go 53 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
extend/config/config.go 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
controllers/esSearch.go
@@ -84,12 +84,12 @@
    //esSize := strconv.Itoa(webSize)
    size := strconv.Itoa(webSize)
    //请求索引
    index := config.EsInfo.EsIndex.VideoPersons.IndexName + "," + config.EsInfo.EsIndex.Personaction.IndexName
    index := config.EsInfo.EsIndex.AiOcean.IndexName
    queryStr := ""
    queryBody := searchBody.InputValue
    //检索框
    if queryBody != "" {
        queryStr = "\"must\":[{\"multi_match\":{\"query\":\"" + queryBody + "\",\"fields\":[\"baseInfo.sex\",\"baseInfo.phoneNum^1.5\",\"baseInfo.personName^1.5\",\"alarmRules.alarmLevel^1.5\",\"alarmRules.linkInfo^1.5\",\"ageDescription^1.5\",\"taskName^1.5\",\"baseInfo.tableName^1.0\",\"sex^2.0\",\"race^2.0\",\"content^1.0\",\"baseInfo.idCard^1.8\",\"cameraAddr^2.0\",\"sdkName^1.5\",\"linkTag\",\"linkTagInfo.baseInfo.sex\",\"linkTagInfo.baseInfo.phoneNum^1.5\",\"linkTagInfo.baseInfo.personName^1.5\",\"linkTagInfo.alarmRules.alarmLevel^1.5\",\"linkTagInfo.alarmRules.linkInfo^1.5\",\"linkTagInfo.ageDescription^1.5\",\"linkTagInfo.taskName^1.5\",\"linkTagInfo.baseInfo.tableName^1.0\",\"linkTagInfo.sex^2.0\",\"linkTagInfo.race^2.0\",\"linkTagInfo.content^1.0\",\"linkTagInfo.baseInfo.idCard^1.8\",\"linkTagInfo.cameraAddr^2.0\",\"linkTagInfo.sdkName^1.5\"]," +
        queryStr = "\"must\":[{\"multi_match\":{\"query\":\"" + queryBody + "\",\"fields\":[\"cameraAddr^1.5\",\"taskName^1.5\",\"sdkName^1.5\",\"showLabels^3.0\",\"baseInfo.tableName^1.5\",\"baseInfo.targetName^1.5\",\"baseInfo.labels^1.5\",\"alarmRules.alarmLevel^1.5\",\"linkTag^1.5\",\"linkTagInfo.cameraAddr\",\"linkTagInfo.taskName^1.5\",\"linkTagInfo.sdkName^1.5\",\"linkTagInfo.showLabels^1.5\",\"linkTagInfo.baseInfo.tableName^1.5\",\"linkTagInfo.baseInfo.targetName^1.5\",\"linkTagInfo.baseInfo.labels^1.5\",\"linkTagInfo.alarmRules.alarmLevel^1.5\"]," +
            "\"type\":\"cross_fields\",\"operator\":\"OR\",\"slop\":0,\"prefix_length\":0,\"max_expansions\":50,\"zero_terms_query\":\"NONE\",\"auto_generate_synonyms_phrase_query\":true,\"fuzzy_transpositions\":true,\"boost\":1}}],"
    }
@@ -103,52 +103,63 @@
    gteDate := searchTime[0]
    lteDate := searchTime[1]
    //判断人员ID
    personIdStr := ""
    //判断数据ID
    idStr := ""
    linkTagInfoIdStr :=""
    //personId := searchBody.Id
    personId := []string{}
    if personId != nil && len(personId) > 0 {
        esPersonId := strings.Replace(strings.Trim(fmt.Sprint(personId), "[]"), " ", "\",\"", -1)
        personIdStr = "{\"terms\":{\"id\":[\"" + esPersonId + "\"]}},"
    id := []string{}
    if id != nil && len(id) > 0 {
        esId := strings.Replace(strings.Trim(fmt.Sprint(id), "[]"), " ", "\",\"", -1)
        idStr = "{\"terms\":{\"id\":[\"" + esId + "\"]}},"
        linkTagInfoIdStr = "{\"terms\":{\"linkTagInfo.id\":[\"" + esId + "\"]}},"
    }
    //判断任务ID
    taskIdStr := ""
    linkTagInfoTaskIdStr := ""
    taskId := searchBody.Tasks
    if taskId != nil && len(taskId) > 0 {
        esTaskId := strings.Replace(strings.Trim(fmt.Sprint(taskId), "[]"), " ", "\",\"", -1)
        taskIdStr = "{\"terms\":{\"taskId\":[\"" + esTaskId + "\"]}},"
        linkTagInfoTaskIdStr = "{\"terms\":{\"linkTagInfo.taskId\":[\"" + esTaskId + "\"]}},"
    }
    //判断摄像机ID
    cameraIdStr := ""
    linkTagInfoCameraIdStr := ""
    cameraId := searchBody.TreeNodes
    if cameraId != nil && len(cameraId) > 0 {
        esCameraId := strings.Replace(strings.Trim(fmt.Sprint(cameraId), "[]"), " ", "\",\"", -1)
        cameraIdStr = "{\"terms\":{\"cameraId\":[\"" + esCameraId + "\"]}},"
        linkTagInfoCameraIdStr = "{\"terms\":{\"linkTagInfo.cameraId\":[\"" + esCameraId + "\"]}},"
    }
    //判断库表ID
    tableId := searchBody.Tabs
    esTableId := ""
    esTableIdStr := ""
    linkTagInfoEsTableIdStr := ""
    if tableId != nil && len(tableId) > 0 {
        esTableId = strings.Replace(strings.Trim(fmt.Sprint(tableId), "[]"), " ", "\",\"", -1)
        index = config.EsInfo.EsIndex.VideoPersons.IndexName
        esTableIdStr = "{\"terms\":{\"baseInfo.tableId\":[\"" + esTableId + "\"]}},"
        linkTagInfoEsTableIdStr = "{\"terms\":{\"linkTagInfo.baseInfo.tableId\":[\"" + esTableId + "\"]}},"
    }
    //判断收藏状态
    isCollectStr := ""
    linkTagInfoIsCollectStr := ""
    isCollect := searchBody.Collection
    if isCollect != "" {
        isCollectStr = "{\"term\":{\"isCollect\":\"" + isCollect + "\"}},"
        isCollectStr = "{\"term\":{\"isCollect\":" + isCollect + "}},"
        linkTagInfoIsCollectStr = "{\"term\":{\"linkTagInfo.isCollect\":" + isCollect + "}},"
    }
    //判断布防等级id
    alarmLevelId := searchBody.AlarmLevel
    alarmLevelStr := ""
    linkTagInfoAlarmLevelStr := ""
    if len(alarmLevelId) > 0 {
        alarmLevelTypes := strings.Replace(strings.Trim(fmt.Sprint(getAlarmLevel(alarmLevelId)), "[]"), " ", "\",\"", -1)
        alarmLevelStr = "{\"terms\":{\"alarmRules.alarmLevel\":[\"" + alarmLevelTypes + "\"]}},"
        linkTagInfoAlarmLevelStr = "{\"terms\":{\"linkTagInfo.alarmRules.alarmLevel\":[\"" + alarmLevelTypes + "\"]}},"
    }
    //使用es底层机制处理分页
@@ -162,22 +173,36 @@
        "/" + index + "/_search?search_type=dfs_query_then_fetch"
    analyServerFilterStr := "{\"term\":{\"analyServerId\":\"" + localConf.ServerId + "\"}},"
    linkTagInfoAnalyServerFilterStr := "{\"term\":{\"linkTagInfo.analyServerId\":\"" + localConf.ServerId + "\"}},"
    //请求体
    prama := "{\"from\":\"" + from + "\"," +
        "\"size\":\"" + size + "\"," +
        "\"query\":{\"bool\":{" + queryStr +
        "\"filter\":[" +
        "\"should\":[" +
        "{\"bool\":{\"filter\":[" +
        cameraIdStr +
        alarmLevelStr +
        personIdStr +
        idStr +
        taskIdStr +
        isCollectStr +
        esTableIdStr +
        analyServerFilterStr +
        "{\"range\":{\"picDate\":{\"from\":\"" + gteDate + "\",\"to\":\"" + lteDate + "\",\"include_lower\":true,\"include_upper\":true,\"boost\":1}}}]}}," +
        "{\"range\":{\"picDate\":{\"from\":\"" + gteDate + "\",\"to\":\"" + lteDate + "\",\"include_lower\":true,\"include_upper\":true,\"boost\":1}}}"+
        "]}}," +
        "{\"bool\":{\"filter\":[" +
        linkTagInfoCameraIdStr +
        linkTagInfoAlarmLevelStr +
        linkTagInfoIdStr +
        linkTagInfoTaskIdStr +
        linkTagInfoIsCollectStr +
        linkTagInfoEsTableIdStr +
        linkTagInfoAnalyServerFilterStr +
        "{\"range\":{\"linkTagInfo.picDate\":{\"from\":\"" + gteDate + "\",\"to\":\"" + lteDate + "\",\"include_lower\":true,\"include_upper\":true,\"boost\":1}}}"+
        "]}}" +
        "]," +
        "\"sort\":[{\"_score\":{\"order\":\"desc\"}},{\"picDate\":{\"order\":\"desc\"}}]," +
        "\"_source\":[\"baseInfo\",\"alarmRules\",\"sex\",\"analyServerName\",\"sdkName\",\"ageDescription\",\"content\",\"id\",\"cameraAddr\",\"picMaxUrl\",\"picDate\",\"race\",\"videoUrl\",\"picSmUrl\",\"taskName\",\"isAlarm\",\"analyServerIp\",\"cameraId\",\"linkTag\",\"linkTagInfo\"]" +
        "\"_source\":{\"includes\":[],\"excludes\":[\"*.feature\"]}" +
        "}"
    //logger.Debug("findEsData.param:",prama)
    //数据解析
extend/config/config.go
@@ -40,10 +40,7 @@
}
type esindexlist struct {
    VideoPersons   index `mapstructure:"videopersons"`
    DbTables       index `mapstructure:"dbtables"`
    Dbtablepersons index `mapstructure:"dbtablepersons"`
    Personaction   index `mapstructure:"personaction"`
    AiOcean   index `mapstructure:"aiOcean"`
}
type index struct {
    IndexName string `mapstructure:"index"`