Elasticsearch NEST 搜索查询只有数字
Posted
技术标签:
【中文标题】Elasticsearch NEST 搜索查询只有数字【英文标题】:Elasticsearch NEST search query is only numbers 【发布时间】: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
。它将显示生成并执行的查询。
谢谢,很高兴知道!
好吧,我没有给出完整的代码。我用经验教训更新问题!
【参考方案1】:
在调试的帮助下找到了答案,修复存在问题。
【讨论】:
以上是关于Elasticsearch NEST 搜索查询只有数字的主要内容,如果未能解决你的问题,请参考以下文章
NEST 中的模拟 Elasticsearch 客户端存在异步搜索方法问题