c# - Elastic Search Nest C# 语法错误:在一个查询中使用通配符和多重匹配
问题描述
我有一个查询,我想要两个子句:一个 for.MultiMatch
和一个 for .Wildcard
。通配符独立于多重匹配。
我可以让他们两个单独工作,但不能一起工作。Visual Studio 中的当前错误消息带有Wildcard
下划线的单词并说明以下内容:
Querycontainer does not contain a definition for 'Wildcard'...
这是我要实现的代码。我试过把.Wildcard
和.MultiMatch
分开.Should
,但无济于事。
.Query(q => q
.Bool(b => b
.Should(m => m
.MultiMatch(ma => ma
.Fields(f => f.Field("_id")
.Field("elements.location.city")
.Field("ticket_number")
)
.Query(query)
)
.Wildcard(c => c
.Field("name").Value(query.ToLower() + "*")
)
)
)
)
您在第 8 行看到的query
作为参数传递给此函数。
如上所述,第 10 行是当前的问题,因为 Query 容器不知道如何处理 Wildcard。
任何和所有输入表示赞赏。
解决方案
MultiMatch
这取决于您在和Wildcard
查询之间想要什么布尔条件?
例如在这里,我正在寻找同时满足MultiMatch
AND WildCard
查询的记录:
.Query(q => q
.Bool(b => b
.Must(m => m
.MultiMatch(mm => mm
.Fields(f => f.Field("FieldName"))
.Query("MyKeyword")
), wc => wc
.Wildcard(c => c
.Field("FieldName")
.Value("*Something*")
)
)
)
));
如果您想对它们进行OR,请使用Should
代替Must
:请参阅Bool Query Usage
推荐阅读
- typescript - 为什么 obj['NonExistentKey'] 不会在 TS 中抛出错误?
- java - 当未在命令行中指定配置文件时,Spring Boot 集成测试无法获取默认配置文件并引发错误
- java - 如果请求返回 404,如何设置改造逻辑以跳过加载?
- arrays - Emu8086将值从数组复制到另一个
- sql - 如何在 Oracle 中指定动态 order by 子句
- matlab - 文件无效,未找到指定模块
- html - 自定义字体(fontface)在发布时不起作用
- windows - CodeBlocks 模块定义文件
- group-by - 匹配组中最高计数的两个字段
- android - 领域 logOut 当前用户无效