elasticsearch - 带有“-”的查询在 ElasticSearch NEST 7.x 中返回不正确的结果
问题描述
这是我用来搜索的查询:
var response = await client.SearchAsync<MenuForElasticSearch>(searchDescriptor => searchDescriptor
.Query(queryContainerDescriptor => queryContainerDescriptor
.Bool(queryDescriptor => queryDescriptor
.Should(queryStringQuery => queryStringQuery.Match(match => match.Field(fld => fld.DisplayName).Query(query)),
queryStringQuery => queryStringQuery.Wildcard(wildcard => wildcard.Field(flds => flds.DisplayName).Value($"*{query}*")),
queryStringQuery => queryStringQuery.Fuzzy(fuzzy => fuzzy.Field(flds => flds.DisplayName).Value(query)))
)));
有 displayName = NPW-711、NPW-677 和 NPW-777 的三个文档。当我搜索 NPW-711 时,它会返回所有三个文档。可以添加DefaultOperator(Elasticsearch.Net.DefaultOperator.And)
帮助吗?如果是,它适合哪里?
解决方案
使用 AND 运算符匹配查询将为您提供所需的内容
var results = await client.SearchAsync<Document>(s => s
.Query(q => q
.Match(m => m
.Field("name")
.Query(query)
.Operator(Operator.And))));
输出:
Results for query "NPW-777": NPW-777
Results for query "NPW": NPW-711,NPW-677,NPW-777
Results for query "677": NPW-677
希望有帮助。
推荐阅读
- mysql - 如何在一对多连接中获取 NULL 记录的计数
- ssl - 如果我们更新 SSL 证书并花时间部署到服务器,网站会不会工作
- terraform0.12+ - 如何为 aws_iam_policy_document 创建可重用的语句块?
- javascript - Javascript 执行顺序:cookie 是否总是在重定向之前设置?
- css - css 动画旋转 - 如何让 2 个元素同时旋转?
- user-interface - 如何取消 xcoms 在气流 UI 中的显示
- node.js - restify 中如何支持可选参数?
- python - 使用唯一的值更改重复项
- google-apps-script - 在谷歌电子表格中获取用户的电子邮件
- powershell - 需要帮助用于 RAM 检查的 PowerShell 脚本