1// Copyright 2012-present Oliver Eilhard. All rights reserved. 2// Use of this source code is governed by a MIT-license. 3// See http://olivere.mit-license.org/license.txt for details. 4 5package elastic 6 7// TermsLookup encapsulates the parameters needed to fetch terms. 8// 9// For more details, see 10// https://www.elastic.co/guide/en/elasticsearch/reference/5.3/query-dsl-terms-query.html#query-dsl-terms-lookup. 11type TermsLookup struct { 12 index string 13 typ string 14 id string 15 path string 16 routing string 17} 18 19// NewTermsLookup creates and initializes a new TermsLookup. 20func NewTermsLookup() *TermsLookup { 21 t := &TermsLookup{} 22 return t 23} 24 25// Index name. 26func (t *TermsLookup) Index(index string) *TermsLookup { 27 t.index = index 28 return t 29} 30 31// Type name. 32func (t *TermsLookup) Type(typ string) *TermsLookup { 33 t.typ = typ 34 return t 35} 36 37// Id to look up. 38func (t *TermsLookup) Id(id string) *TermsLookup { 39 t.id = id 40 return t 41} 42 43// Path to use for lookup. 44func (t *TermsLookup) Path(path string) *TermsLookup { 45 t.path = path 46 return t 47} 48 49// Routing value. 50func (t *TermsLookup) Routing(routing string) *TermsLookup { 51 t.routing = routing 52 return t 53} 54 55// Source creates the JSON source of the builder. 56func (t *TermsLookup) Source() (interface{}, error) { 57 src := make(map[string]interface{}) 58 if t.index != "" { 59 src["index"] = t.index 60 } 61 if t.typ != "" { 62 src["type"] = t.typ 63 } 64 if t.id != "" { 65 src["id"] = t.id 66 } 67 if t.path != "" { 68 src["path"] = t.path 69 } 70 if t.routing != "" { 71 src["routing"] = t.routing 72 } 73 return src, nil 74} 75