44 lines
1.1 KiB
Go
44 lines
1.1 KiB
Go
|
package esquery
|
||
|
|
||
|
import "encoding/json"
|
||
|
|
||
|
/*******************************************************************************
|
||
|
* Boosting Queries
|
||
|
* https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-boosting-query.html
|
||
|
******************************************************************************/
|
||
|
|
||
|
type BoostingQuery struct {
|
||
|
params boostingQueryParams
|
||
|
}
|
||
|
|
||
|
type boostingQueryParams struct {
|
||
|
Positive json.Marshaler `json:"positive"`
|
||
|
Negative json.Marshaler `json:"negative"`
|
||
|
NegativeBoost float32 `json:"negative_boost"`
|
||
|
}
|
||
|
|
||
|
func Boosting() *BoostingQuery {
|
||
|
return &BoostingQuery{}
|
||
|
}
|
||
|
|
||
|
func (q *BoostingQuery) Positive(p json.Marshaler) *BoostingQuery {
|
||
|
q.params.Positive = p
|
||
|
return q
|
||
|
}
|
||
|
|
||
|
func (q *BoostingQuery) Negative(p json.Marshaler) *BoostingQuery {
|
||
|
q.params.Negative = p
|
||
|
return q
|
||
|
}
|
||
|
|
||
|
func (q *BoostingQuery) NegativeBoost(b float32) *BoostingQuery {
|
||
|
q.params.NegativeBoost = b
|
||
|
return q
|
||
|
}
|
||
|
|
||
|
func (q *BoostingQuery) MarshalJSON() ([]byte, error) {
|
||
|
return json.Marshal(map[string]boostingQueryParams{
|
||
|
"boosting": q.params,
|
||
|
})
|
||
|
}
|