elasticsearch,nest,C#,elasticsearch,Nest" /> elasticsearch,nest,C#,elasticsearch,Nest" />

C# 从弹性体中排除(不包含)某些值的查询

C# 从弹性体中排除(不包含)某些值的查询,c#,elasticsearch,nest,C#,elasticsearch,Nest,我使用NEST query从elastic中筛选记录 以下查询将根据articleIds列表过滤记录。它很好用 QueryContainer nestedQuery = null; nestedQuery &= Query<PublishedArticle>.Terms(qs => qs .Field(f => f.AssignedArticleList.FirstOrDefault().AssignedArticleId)

我使用NEST query从elastic中筛选记录

以下查询将根据
articleIds
列表过滤记录。它很好用

QueryContainer nestedQuery = null;
nestedQuery &= Query<PublishedArticle>.Terms(qs => qs
               .Field(f => f.AssignedArticleList.FirstOrDefault().AssignedArticleId)
                  .Terms(articleIds)
              );
QueryContainer nestedQuery=null;
nestedQuery&=Query.Terms(qs=>qs
.Field(f=>f.AssignedArticleList.FirstOrDefault().AssignedArticleId)
.条款(articleIds)
);
但是现在我想获取不包含prop
articleIds
中的值的记录。我如何做到这一点?正在检查
不得
子句上的弹性。如何构建此查询

articleIds
基本上是一个整数列表


感谢您的帮助!:)

您需要一个带有
must\u 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)
                )
            )
        )
    )
);
两者都产生

{
  "query": {
    "bool": {
      "must_not": [
        {
          "terms": {
            "assignedArticleList.assignedArticleId": [
              1,
              2,
              3,
              4
            ]
          }
        }
      ]
    }
  }
}

谢谢工作得非常好!:)除了弹性文档中提到的内容外,还有其他教程参考吗?还有客户文档-我们希望进一步扩展,包括关于分析、索引、渗透等的附加部分,并更好地组织这些部分。
{
  "query": {
    "bool": {
      "must_not": [
        {
          "terms": {
            "assignedArticleList.assignedArticleId": [
              1,
              2,
              3,
              4
            ]
          }
        }
      ]
    }
  }
}