IMPORTANT: No additional bug fixes or documentation updates
will be released for this version. For the latest information, see the
current release documentation.
Function Score Query Usage
editFunction Score Query Usage
editFluent DSL example
editq .FunctionScore(c => c .Name("named_query") .Boost(1.1) .Query(qq => qq.MatchAll()) .BoostMode(FunctionBoostMode.Multiply) .ScoreMode(FunctionScoreMode.Sum) .MaxBoost(20.0) .MinScore(1.0) .Functions(f => f .Exponential(b => b .Field(p => p.NumberOfCommits) .Decay(0.5) .Origin(1.0) .Scale(0.1) .Weight(2.1) .Filter(fi => fi .Range(r => r .Field(p => p.NumberOfContributors) .GreaterThan(10) ) ) ) .GaussDate(b => b.Field(p => p.LastActivity).Origin(DateMath.Now).Decay(0.5).Scale("1d")) .LinearGeoLocation(b => b .Field(p => p.LocationPoint) .Origin(new GeoLocation(70, -70)) .Scale(Distance.Miles(1)) .MultiValueMode(MultiValueMode.Average) ) .FieldValueFactor(b => b .Field(p => p.NumberOfContributors) .Factor(1.1) .Missing(0.1) .Modifier(FieldValueFactorModifier.Square) .Weight(3) .Filter(fi => fi .Term(t => t .Field(p => p.Branches) .Value("dev") ) ) ) .RandomScore(r => r.Seed(1337).Field("_seq_no")) .RandomScore(r => r.Seed("randomstring").Field("_seq_no")) .Weight(1.0) .ScriptScore(s => s .Script(ss => ss .Source("Math.log(2 + doc['numberOfCommits'].value)") ) .Weight(2) ) ) )
Object Initializer syntax example
editnew FunctionScoreQuery() { Name = "named_query", Boost = 1.1, Query = new MatchAllQuery(), BoostMode = FunctionBoostMode.Multiply, ScoreMode = FunctionScoreMode.Sum, MaxBoost = 20.0, MinScore = 1.0, Functions = new List<IScoreFunction> { new ExponentialDecayFunction { Origin = 1.0, Decay = 0.5, Field = Field<Project>(p => p.NumberOfCommits), Scale = 0.1, Weight = 2.1, Filter = new NumericRangeQuery { Field = Field<Project>(f => f.NumberOfContributors), GreaterThan = 10 } }, new GaussDateDecayFunction { Origin = DateMath.Now, Field = Field<Project>(p => p.LastActivity), Decay = 0.5, Scale = TimeSpan.FromDays(1) }, new LinearGeoDecayFunction { Origin = new GeoLocation(70, -70), Field = Field<Project>(p => p.LocationPoint), Scale = Distance.Miles(1), MultiValueMode = MultiValueMode.Average }, new FieldValueFactorFunction { Field = Field<Project>(p => p.NumberOfContributors), Factor = 1.1, Missing = 0.1, Modifier = FieldValueFactorModifier.Square, Weight = 3, Filter = new TermQuery { Field = Field<Project>(p => p.Branches), Value = "dev" } }, new RandomScoreFunction { Seed = 1337, Field = "_seq_no" }, new RandomScoreFunction { Seed = "randomstring", Field = "_seq_no" }, new WeightFunction { Weight = 1.0 }, new ScriptScoreFunction { Script = new InlineScript("Math.log(2 + doc['numberOfCommits'].value)"), Weight = 2.0 } } }
Example json output.
{ "function_score": { "_name": "named_query", "boost": 1.1, "boost_mode": "multiply", "functions": [ { "exp": { "numberOfCommits": { "origin": 1.0, "scale": 0.1, "decay": 0.5 } }, "weight": 2.1, "filter": { "range": { "numberOfContributors": { "gt": 10.0 } } } }, { "gauss": { "lastActivity": { "origin": "now", "scale": "1d", "decay": 0.5 } } }, { "linear": { "locationPoint": { "origin": { "lat": 70.0, "lon": -70.0 }, "scale": "1mi" }, "multi_value_mode": "avg" } }, { "filter": { "term": { "branches": { "value": "dev" } } }, "field_value_factor": { "field": "numberOfContributors", "factor": 1.1, "missing": 0.1, "modifier": "square" }, "weight": 3.0 }, { "random_score": { "seed": 1337, "field": "_seq_no" } }, { "random_score": { "seed": "randomstring", "field": "_seq_no" } }, { "weight": 1.0 }, { "script_score": { "script": { "source": "Math.log(2 + doc['numberOfCommits'].value)" } }, "weight": 2.0 } ], "max_boost": 20.0, "min_score": 1.0, "query": { "match_all": {} }, "score_mode": "sum" } }