|
@ -11,8 +11,10 @@ import ( |
|
|
"strconv" |
|
|
"strconv" |
|
|
"time" |
|
|
"time" |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
var client *elastic.Client |
|
|
var client *elastic.Client |
|
|
var host = "http://106.12.3.97:8209/" |
|
|
var host = "http://47.98.109.5:8209/" |
|
|
|
|
|
|
|
|
const mapping = ` |
|
|
const mapping = ` |
|
|
{ |
|
|
{ |
|
|
"settings":{ |
|
|
"settings":{ |
|
@ -61,7 +63,7 @@ func init() { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func Index() { |
|
|
func Index() { |
|
|
ctx := context.Background() |
|
|
ctx := context.Background() |
|
|
exists, err := client.IndexExists("beeblog").Do(ctx) |
|
|
exists, err := client.IndexExists("beeblog").Do(ctx) |
|
|
if err != nil { |
|
|
if err != nil { |
|
@ -81,15 +83,16 @@ func Index() { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func ESSave(blog *models.Blog) { |
|
|
func ESSave(blog *models.Blog) { |
|
|
ctx := context.Background() |
|
|
ctx := context.Background() |
|
|
id := strconv.FormatInt(blog.Id,10) |
|
|
id := strconv.FormatInt(blog.Id, 10) |
|
|
_, err := client.Index().Index("beeblog").Type("beeblog").Id(id).BodyJson(blog).Do(ctx) |
|
|
_, err := client.Index().Index("beeblog").Type("beeblog").Id(id).BodyJson(blog).Do(ctx) |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
fmt.Println(err) |
|
|
fmt.Println(err) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//删除
|
|
|
//删除
|
|
|
func ESDelete(id string) { |
|
|
func ESDelete(id string) { |
|
|
_, err := client.Delete().Index("beeblog"). |
|
|
_, err := client.Delete().Index("beeblog"). |
|
@ -102,20 +105,20 @@ func ESDelete(id string) { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
func Search(key string) (*models.Blog,error) { |
|
|
func Search(key string) (*models.Blog, error) { |
|
|
ctx := context.Background() |
|
|
ctx := context.Background() |
|
|
query := elastic.NewMultiMatchQuery(key,"Title","BlogHtml") |
|
|
query := elastic.NewMultiMatchQuery(key, "Title", "BlogHtml") |
|
|
searchResult, err := client.Search(). |
|
|
searchResult, err := client.Search(). |
|
|
Index("beeblog"). // 指定index,返回一个*SearchService对象
|
|
|
Index("beeblog"). // 指定index,返回一个*SearchService对象
|
|
|
//Type("beeblog").
|
|
|
//Type("beeblog").
|
|
|
Query(query). // 设置查询体,返回同一个*SearchService对象
|
|
|
Query(query). // 设置查询体,返回同一个*SearchService对象
|
|
|
//Sort("user", true). // 按照user升序排列
|
|
|
//Sort("user", true). // 按照user升序排列
|
|
|
//From(0).Size(10). // 从第一条数据,找十条,即0-9
|
|
|
//From(0).Size(10). // 从第一条数据,找十条,即0-9
|
|
|
Pretty(true). // 使查询request和返回的结果格式美观
|
|
|
Pretty(true). // 使查询request和返回的结果格式美观
|
|
|
Do(ctx) // 返回一个*SearchResult
|
|
|
Do(ctx) // 返回一个*SearchResult
|
|
|
if err != nil { |
|
|
if err != nil { |
|
|
println("search error",err.Error()) |
|
|
println("search error", err.Error()) |
|
|
return nil,err |
|
|
return nil, err |
|
|
} |
|
|
} |
|
|
fmt.Printf("找到 [%d] 组tweets\n", searchResult.Hits.TotalHits) |
|
|
fmt.Printf("找到 [%d] 组tweets\n", searchResult.Hits.TotalHits) |
|
|
// 查看匹配到多少组数据
|
|
|
// 查看匹配到多少组数据
|
|
@ -124,10 +127,10 @@ func Search(key string) (*models.Blog,error) { |
|
|
for _, item := range searchResult.Each(reflect.TypeOf(typ)) { //从搜索结果中取数据的方法
|
|
|
for _, item := range searchResult.Each(reflect.TypeOf(typ)) { //从搜索结果中取数据的方法
|
|
|
t := item.(models.Blog) |
|
|
t := item.(models.Blog) |
|
|
fmt.Printf("%#v\n", t) |
|
|
fmt.Printf("%#v\n", t) |
|
|
return &t,nil |
|
|
return &t, nil |
|
|
} |
|
|
} |
|
|
if err != nil { |
|
|
if err != nil { |
|
|
panic(err) |
|
|
panic(err) |
|
|
} |
|
|
} |
|
|
return nil,nil |
|
|
return nil, nil |
|
|
} |
|
|
} |