请问下哪位大佬使用过 github.com/olivere/elastic 包操作ElasticSearch的吗?

query := elastic.NewTermQuery("category_id",categoryId)
result, e := ES.GetEs().Search().Index("group_category").Type("_doc").Query(query).Sort("img_date",false).Do(context.Background())

这样搜索是把所有字段都返回了, 我想只返回指定的字段,应该怎么设置呢? 比如我只想返回 id这个字段, 求各位大佬指导指导!

阅读 6.1k
1 个回答
package main

import (
    "fmt"
    "github.com/olivere/elastic"
    "golang.org/x/net/context"
)

func main() {
    client, err := elastic.NewClient(
        elastic.SetURL("your es"),
    )
    if err != nil {
        // Handle error
    }

    fsc := elastic.NewFetchSourceContext(true).Include("field1", "field12") //.Exclude("*.description")
    query := elastic.NewTermQuery("category_id", 1)

    result, err := client.Search().
        Index("yourindex").
        Type("yourtype").
        Query(query).
        FetchSourceContext(fsc).
        Sort("img_date", false).
        Pretty(true).
        Do(context.Background())
    if err != nil {
        panic(err)
    }

    for i, r := range result.Hits.Hits {
        fmt.Println(i, string(*r.Source))
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题