我正在尝试使用.NET连接可用性设置Elasticsearch环境。我能够使用自定义模糊距离进行基本查询,但我无法做的是在查询时进行字段提升。 我已经尝试了几个教程/问题,例如Elasticsearch Nest Boost query或Elastic Search using NEST Field Boosting,但是NEST不会识别" .OnFieldsWithBoost"或" .OnFields"。
我能够通过弹性搜索的HTTP API进行一些字段提升:
POST /products/typeproduct/_search
{
"query" : {
"bool": {
"should": [
{
"match": {
"Title": {
"query": "sometest",
"boost": 10.0
}
}
},
{
"match": {
"Name": "sometest"
}
}
]
}
}
}
但我再次无法通过NEST语法匹配此查询,因为它不允许多次"匹配" es"应该"。
我的最终目标是能够提升某些字段(标题)而不是其他字段(名称),并在匹配中添加一些模糊性。 任何帮助将不胜感激。
我的弹性搜索版本:2.2.0 我的NEST版本:2.0.2
答案 0 :(得分:5)
这是一个流畅的查询:
var response = client.Search<Document>(search => search
.Query(q => q.Bool(b => b
.Should(
s => s.Match(m => m.Query("sometest").Field(f => f.Title).Boost(1.1)),
s => s.Match(m => m.Query("sometest").Field(f => f.Name).Fuzziness(Fuzziness.EditDistance(1)))
))));
生成以下对elasticsearch的查询:
{
"query": {
"bool": {
"should": [
{
"match": {
"title": {
"boost": 1.1,
"query": "sometest"
}
}
},
{
"match": {
"name": {
"query": "sometest",
"fuzziness": 1
}
}
}
]
}
}
}
我希望这就是你要找的东西:)