仅使用Elasticearch选择特定字段

b4lqfgs4  于 2022-09-20  发布在  ElasticSearch
关注(0)|答案(2)|浏览(187)

我正在尝试从索引中获取具有特定字段的数据。我使用的是奥利弗弹性客户端。我尝试使用以下代码从Property Index中选择卧室、房间和位置字段。

query := elastic.NewBoolQuery()

    query = query.Must(elastic.NewTermQuery("rooms", "1"))
    query = query.Must(elastic.NewTermQuery("bedrooms", "1"))

    get1, err := client.Search("Bedrooms", "rooms", "location").
        Index("property").
        //Type("doc").
        Query(query).
        Sort("id", true).
        Size(5000).
        Do(ctx)
    if err != nil {
        // Handle error
        panic(err)
    }
pw9qyyiw

pw9qyyiw1#

您可以使用字段来实现这一点

query := elastic.NewBoolQuery()

query = query.Must(elastic.NewTermQuery("rooms", "1"))
query = query.Must(elastic.NewTermQuery("bedrooms", "1"))

get1, err := client.Search("Bedrooms", "rooms", "location").
    Index("property").
    //Type("doc").
    Query(query).
    Sort("id", true).
    Fields("field1","field2")
    Size(5000).
    Do(ctx)
if err != nil {
    // Handle error
    panic(err)
}
r7knjye2

r7knjye22#

我使用的是Olivere/Elastic v7.0.32,但我无法将其与DocValueFields一起使用。

这对我来说很管用:

query := elastic.NewBoolQuery()
// specify query that you need
query.Must(elastic.NewRangeQuery("expires").Gt(time.Now()))

// provide fields in .Include() function that you wish to return
fsc := elastic.NewFetchSourceContext(true).Include("image", "name")

// create new builder
builder := elastic.NewSearchSource().Query(query).FetchSourceContext(fsc)

searchResults, err := client.
    Search().
    Index("index").
    SearchSource(builder).
    Do(ctx)

相关问题