浏览代码

elasticsearch

fengweiqiang 5 年之前
父节点
当前提交
9821b1b8bd
共有 5 个文件被更改,包括 117 次插入21 次删除
  1. 5 3
      src/config.json
  2. 81 14
      src/jy/admin/audit/qiyeku.go
  3. 4 2
      src/jy/pretreated/analytable.go
  4. 17 0
      src/jy/util/elastic_client.go
  5. 10 2
      src/main.go

+ 5 - 3
src/config.json

@@ -2,9 +2,11 @@
     "port": "9090",
     "mgodb": "192.168.3.207:27092",
     "dbsize": 10,
-    "dbname": "extract_dev32",
-    "redis": "buyer=192.168.3.207:1679,winner=192.168.3.207:1679,agency=192.168.3.207:1679",
-    "elasticsearch": "http://192.168.3.11:9800",
+    "dbname": "extract_kf",
+    "redis": "buyer=127.0.0.1:6379,winner=127.0.0.1:6379,agency=127.0.0.1:6379",
+    "elasticsearch": "http://127.0.0.1:9200",
+    "elasticsearch_index": "extract_kf",
+    "elasticsearch_type": "enterprise_qyxy",
     "elasticPoolSize": 30,
     "mergetable": "projectset",
     "mergetablealias": "projectset_v1",

+ 81 - 14
src/jy/admin/audit/qiyeku.go

@@ -1,11 +1,16 @@
 package audit
 
 import (
+	"context"
+	"encoding/json"
 	"github.com/gin-gonic/gin"
 	"gopkg.in/mgo.v2/bson"
+	"gopkg.in/olivere/elastic.v5"
 	. "jy/admin"
 	"jy/clear"
 	. "jy/mongodbutil"
+	"jy/util"
+	"log"
 	"strconv"
 	"strings"
 	"time"
@@ -33,28 +38,49 @@ func init() {
 			c.JSON(200, gin.H{"rep": 400})
 			return
 		}
+		capitalfloat :=clear.ObjToMoney([]interface{}{capital, ""})[0]
 		e := make(map[string]interface{})
 		e["company_name"] = company_name
 		e["alias"] = alias
 		e["province"] = province
 		e["city"] = city
 		e["district"] = district
-		e["capital"] = clear.ObjToMoney([]interface{}{capital, ""})[0]
+		e["capital"] = capitalfloat
 		e["company_address"] = company_address
 		var sid string
 		if strings.TrimSpace(_id) != "" && bson.IsObjectIdHex(_id) {
 			sid = _id
-			Mgo.Update("enterprise_qyxy", bson.M{"_id": bson.ObjectIdHex(_id)}, bson.M{"$set": bson.M{
+			tmpb := Mgo.Update("enterprise_qyxy", bson.M{"_id": bson.ObjectIdHex(_id)}, bson.M{"$set": bson.M{
 				"company_name":    company_name,
 				"alias":           alias,
 				"province":        province,
 				"city":            city,
 				"district":        district,
-				"capital":         capital,
+				"capital":         capitalfloat,
 				"company_address": company_address,
 			}}, false, false)
+			if tmpb{
+				_,err := util.ElasticClient.Update().Index(util.ElasticClientIndex).Type(util.ElasticClientType).
+					Id(sid).Doc(map[string]interface{}{
+					"company_name":    company_name,
+					"alias":           alias,
+					"province":        province,
+					"city":            city,
+					"district":        district,
+					"capital":         capitalfloat,
+					"company_address": company_address,
+				}).Refresh("true").Do(context.TODO())
+				if err != nil{
+					log.Println("update qyk err:",err)
+				}
+			}
 		} else {
 			sid = Mgo.Save("enterprise_qyxy", e)
+			delete(e,"_id")
+			_,err :=util.ElasticClient.Index().Index(util.ElasticClientIndex).Type(util.ElasticClientType).Id(sid).BodyJson(e).Refresh("true").Do(context.TODO())
+			if err != nil{
+				log.Println("save qyk err:",err)
+			}
 		}
 		c.JSON(200, gin.H{"rep": 200, "saveid": sid})
 	})
@@ -65,12 +91,39 @@ func init() {
 		limitstr, _ := c.GetPostForm("length")
 		start, _ := strconv.Atoi(startstr)
 		limit, _ := strconv.Atoi(limitstr)
+		if limit < 1 {
+			limit = 10
+		}
 		if search == "" {
 			c.JSON(200, gin.H{"data": []map[string]interface{}{}, "recordsFiltered": 0, "recordsTotal": 0})
 		} else {
-			count := Mgo.Count("enterprise_qyxy", bson.M{"company_name": bson.M{"$regex": bson.RegEx{search, "i"}}})
-			data, _ := Mgo.Find("enterprise_qyxy", bson.M{"company_name": bson.M{"$regex": bson.RegEx{search, "i"}}}, `{"_id":-1}`, nil, false, start, limit)
-			c.JSON(200, gin.H{"data": data, "recordsFiltered": count, "recordsTotal": count})
+			//log.Println(util.ElasticClientIndex, util.ElasticClientType, search)
+			res, err := util.ElasticClient.Search(util.ElasticClientIndex).
+				Type(util.ElasticClientType).
+				Query( elastic.NewMatchPhraseQuery("company_name", search)).
+				Size(limit).
+				From(start).
+				Do(context.TODO())
+			if err != nil {
+				log.Println(err)
+				c.JSON(500, gin.H{"data": []map[string]interface{}{}, "recordsFiltered": 0, "recordsTotal": 0})
+				return
+			}
+			tmps := make([]map[string]interface{}, 0)
+			for _, v := range res.Hits.Hits {
+				tmp := make(map[string]interface{})
+				err := json.Unmarshal(*v.Source, &tmp)
+				if err != nil {
+					log.Println(err)
+					continue
+				}
+				tmp["_id"] = v.Id
+				//log.Println(tmp)
+				tmps = append(tmps, tmp)
+			}
+			//count := Mgo.Count("enterprise_qyxy", bson.M{"company_name": bson.M{"$regex": bson.RegEx{search, "i"}}})
+			//data, _ := Mgo.Find("enterprise_qyxy", bson.M{"company_name": bson.M{"$regex": bson.RegEx{search, "i"}}}, `{"_id":-1}`, nil, false, start, limit)
+			c.JSON(200, gin.H{"data": tmps, "recordsFiltered": res.Hits.TotalHits, "recordsTotal": res.Hits.TotalHits})
 		}
 	})
 	//delete
@@ -78,6 +131,10 @@ func init() {
 		_id := c.PostForm("_id")
 		if bson.IsObjectIdHex(_id) {
 			delisok := Mgo.Del("enterprise_qyxy", bson.M{"_id": bson.ObjectIdHex(_id)})
+			_,err := util.ElasticClient.Delete().Index(util.ElasticClientIndex).Type(util.ElasticClientType).Id(_id).Refresh("true").Do(context.TODO())
+			if err != nil{
+				log.Println("delete qyk err:",err)
+			}
 			c.JSON(200, gin.H{"rep": 200, "data": delisok})
 		} else {
 			c.JSON(200, gin.H{"rep": 400})
@@ -101,6 +158,14 @@ func init() {
 		//log.Println(_id,industrys)
 		if bson.IsObjectIdHex(_id) {
 			b := Mgo.Update("enterprise_qyxy", bson.M{"_id": bson.ObjectIdHex(_id)}, bson.M{"$set": bson.M{"industry": industrys}}, false, false)
+			if b {
+				_,err := util.ElasticClient.Update().Index(util.ElasticClientIndex).Type(util.ElasticClientType).Id(_id).Doc(map[string]interface{}{
+					"industry":industrys,
+				}).Refresh("true").Do(context.TODO())
+				if err != nil{
+					log.Println("update yqk industry err :",err)
+				}
+			}
 			c.JSON(200, gin.H{"rep": 200, "data": b})
 		} else {
 			c.JSON(200, gin.H{"rep": 400})
@@ -124,10 +189,10 @@ func init() {
 			for i, v := range contact_types {
 				contacts[i]["contact_type"] = v
 			}
-			for i,v := range phones{
+			for i, v := range phones {
 				contacts[i]["phone"] = v
 			}
-			for i,v := range topscopeclasss{
+			for i, v := range topscopeclasss {
 				contacts[i]["topscopeclass"] = v
 				contacts[i]["updatetime"] = time.Now().Unix()
 			}
@@ -135,15 +200,17 @@ func init() {
 			//	log.Println(k,v)
 			//}
 			b := Mgo.Update("enterprise_qyxy", bson.M{"_id": bson.ObjectIdHex(_id)}, bson.M{"$set": bson.M{"contact": contacts}}, false, false)
+			if b {
+				_,err := util.ElasticClient.Update().Index(util.ElasticClientIndex).Type(util.ElasticClientType).Id(_id).Doc(map[string]interface{}{
+					"contact":contacts,
+				}).Refresh("true").Do(context.TODO())
+				if err != nil{
+					log.Println("update yqk contact err :",err)
+				}
+			}
 			c.JSON(200, gin.H{"rep": 200, "data": b})
 		} else {
 			c.JSON(200, gin.H{"rep": 400})
 		}
-		//if bson.IsObjectIdHex(_id) {
-		//	b := Mgo.Update("enterprise_qyxy", bson.M{"_id": bson.ObjectIdHex(_id)}, bson.M{"$set": bson.M{"industry": industrys}}, false, false)
-		//	c.JSON(200, gin.H{"rep": 200, "data": b})
-		//} else {
-		//	c.JSON(200, gin.H{"rep": 400})
-		//}
 	})
 }

+ 4 - 2
src/jy/pretreated/analytable.go

@@ -2116,8 +2116,10 @@ func (tn *Table) manyPackageProcessByIndex(index []string, standIndex_pos []int,
 					continue
 				}
 				if !(len(kvTags) > 0 && regexp.MustCompile("^(项目|开标|采购单位|招标机构)").MatchString(kvTag_k)) {
-					tn.SortKV.RemoveKey(k1)
-					tn.assemblePackage(k1, val, index[0], isSite, codeSite)
+					if tn.SortKV.Map[k1] != nil{
+						tn.SortKV.RemoveKey(k1)
+						tn.assemblePackage(k1, val, index[0], isSite, codeSite)
+					} 
 					//log.Println("remove", k1, val)
 				}
 			}

+ 17 - 0
src/jy/util/elastic_client.go

@@ -0,0 +1,17 @@
+package util
+
+import (
+	"gopkg.in/olivere/elastic.v5"
+)
+
+var ElasticClient *elastic.Client
+var ElasticClientIndex,ElasticClientType string
+
+//func init() {
+//	if eClient, err := elastic.NewClient(elastic.SetURL(util.ObjToString(Config["elasticsearch"])));err != nil{
+//		log.Println(Config["elasticsearch"])
+//		log.Fatalln("ElasticClient err:",err)
+//	}else {
+//		ElasticClient = eClient
+//	}
+//}

+ 10 - 2
src/main.go

@@ -1,6 +1,7 @@
 package main
 
 import (
+	log "github.com/donnie4w/go-logger/logger"
 	_ "jy/admin"
 	_ "jy/admin/audit"
 	_ "jy/admin/distribution"
@@ -13,9 +14,8 @@ import (
 	_ "net/http/pprof"
 	qu "qfw/util"
 	//"qfw/util/elastic"
+	"gopkg.in/olivere/elastic.v5"
 	"qfw/util/redis"
-
-	log "github.com/donnie4w/go-logger/logger"
 )
 
 func init() {
@@ -36,6 +36,14 @@ func init() {
 	//初始化elastic连接
 	//"winner=172.17.145.179:2710,buyer=172.17.145.179:2711"
 	//elastic.InitElasticSize(qu.ObjToString(util.Config["elasticsearch"]), qu.IntAllDef(util.Config["elasticPoolSize"], 30))
+	if eClient, err := elastic.NewClient(elastic.SetURL(qu.ObjToString(util.Config["elasticsearch"]))); err != nil {
+		log.Debug(util.Config["elasticsearch"])
+		log.Fatal("ElasticClient err:", err)
+	} else {
+		util.ElasticClient = eClient
+		util.ElasticClientIndex = qu.ObjToString(util.Config["elasticsearch_index"])
+		util.ElasticClientType = qu.ObjToString(util.Config["elasticsearch_type"])
+	}
 }
 
 func main() {