从elastic中排除(不包含)某些值的查询
本文关键字:查询 包含 elastic 排除 | 更新日期: 2023-09-27 18:09:34
我使用NEST查询从弹性过滤记录。
下面的查询将根据articleIds
列表过滤记录。
QueryContainer nestedQuery = null;
nestedQuery &= Query<PublishedArticle>.Terms(qs => qs
.Field(f => f.AssignedArticleList.FirstOrDefault().AssignedArticleId)
.Terms(articleIds)
);
但是现在我想要获取不包含prop articleIds
值的记录。我该如何做到这一点?检查must_not
条款弹性文件。我如何构建这个查询?
articleIds
基本上是一个整数列表。
感谢任何帮助!:)
您需要一个带有must_not
子句的bool
查询
var articleIds = new[] { 1, 2, 3, 4 };
client.Search<PublishedArticle>(s => s
.Query(q => q
.Bool(b => b
.MustNot(mn => mn
.Terms(t => t
.Field(f => f.AssignedArticleList.FirstOrDefault().AssignedArticleId)
.Terms(articleIds)
)
)
)
)
);
使用!
操作符,可以在NEST中使用操作符重载
must_not
client.Search<PublishedArticle>(s => s
.Query(q => !q
.Terms(t => t
.Field(f => f.AssignedArticleList.FirstOrDefault().AssignedArticleId)
.Terms(articleIds)
)
)
);
都生产
{
"query": {
"bool": {
"must_not": [
{
"terms": {
"assignedArticleList.assignedArticleId": [
1,
2,
3,
4
]
}
}
]
}
}
}