【发布时间】:2021-12-01 21:08:13
【问题描述】:
我在 ElasticSearch 中搜索时遇到问题,并且查询只是数字。 我使用的代码是
var result = await _elasticClient
.SearchAsync<MyDocument>(search =>
search.Index("index")
.From(offset)
.Size(size)
.Query(q =>
q.Bool(b => b
.Should(should => should
.MultiMatch(mm =>
mm.Query(query)
.Fields(f => f
.Field("stringNumber", boost: 3)
.Field("a", boost: 2)
.Field("b", boost: 1)
).Lenient(true)
)
)
.Should(should => should
.MultiMatch(mm =>
mm.Query(query)
.Fields(f => f
.Field("a", boost: 2)
).Fuzziness(Fuzziness.Ratio(1)
)
)
)
)
);
这给了我一个空的结果,但是当我进入 kibana 并输入类似的东西时,我得到了一个结果。 这是 Kibana 中的查询
"size": 20,
"query": {
"bool": {
"should": [
{"multi_match": {
"query": "1234",
"fields": ["stringNumber", "a^2", "b^1"]
}}
]
}
}
我希望有人能看到我的错误。 C# 代码给出了空,但 Kibana 给出了文档的结果。
更新修复
var result = await _elasticClient
.SearchAsync<MyDocument>(search =>
search.Index("index")
.From(offset)
.Size(size)
.Query(q =>
q.Bool(b => b
.Should(should => should
.MultiMatch(mm =>
mm.Query(query)
.Fields(f => f
.Field("stringNumber", boost: 3)
.Field("a", boost: 2)
.Field("b", boost: 1)
).Lenient(true)
)
,
should2 => should2
.MultiMatch(mm =>
mm.Query(query)
.Fields(f => f
.Field("a", boost: 2)
).Fuzziness(Fuzziness.Ratio(1)
)
)
)
)
);
【问题讨论】:
-
在您的 elasticClient 上启用调试模式并在执行查询后检查
result.DebugInformation。它将显示生成并执行的查询。 -
谢谢,很高兴知道!
-
好吧,我没有给出完整的代码。我用经验教训更新问题!
标签: c# elasticsearch nest