我有一个查询,我希望有两个子句:一个用于.MultiMatch
,另一个用于.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。
赞赏任何和所有输入。
答案 0 :(得分:1)
这取决于您在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*")
)
)
)
));
如果您想要或,请使用Should
代替Must
:请参阅Bool Query Usage