我正在使用NEST查询来过滤弹性记录。
以下查询将根据articleIds
列表过滤记录。它工作正常。
QueryContainer nestedQuery = null;
nestedQuery &= Query<PublishedArticle>.Terms(qs => qs
.Field(f => f.AssignedArticleList.FirstOrDefault().AssignedArticleId)
.Terms(articleIds)
);
但现在我想获取不包含prop articleIds
中值的记录。我该如何实现这一目标?检查must_not
条款上的弹性documents。如何构建此查询?
articleIds
基本上是一个整数列表。
任何帮助表示赞赏! :)
答案 0 :(得分:3)
您需要bool
子句1}}
must_not
使用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)
)
)
);