elasticsearch 嵌套:使用must和should约束构建QueryContainer请求,elasticsearch,nest,elasticsearch,Nest" /> elasticsearch 嵌套:使用must和should约束构建QueryContainer请求,elasticsearch,nest,elasticsearch,Nest" />

elasticsearch 嵌套:使用must和should约束构建QueryContainer请求

elasticsearch 嵌套:使用must和should约束构建QueryContainer请求,elasticsearch,nest,elasticsearch,Nest,我尝试构建一个包含must和should请求的elasticsearch请求 我的目标要求如下: POST /index/type/_search { "query": { "bool" : { "must" : { "match":{"field1":{"query":"word1"}} }, "should":{ "match":{"field2":{"query":"word2"}} }

我尝试构建一个包含must和should请求的elasticsearch请求 我的目标要求如下:

POST /index/type/_search
{
  "query": {
    "bool" : {
      "must" : {
         "match":{"field1":{"query":"word1"}}
      },
      "should":{
        "match":{"field2":{"query":"word2"}}
      }
    }
  }}
我写道:

 var queryContainer = new QueryContainer();
 queryContainer &= new MatchQuery() { Field = "field1", Query = "word1" };
 queryContainer |= new MatchQuery() { Field = "field2", Query = "word2"};


var searchRequest = new SearchRequest<type>
        {
            Query = queryContainer
        };

你知道在构建QueryContainer时应该写些什么吗?

在这里使用运算符重载没有多大帮助;我认为在这种情况下,构造
bool
查询更清晰

对象初始值设定项语法

var searchRequest = new SearchRequest<Document>()
{
    Query = new BoolQuery
    {
        Must = new QueryContainer[] { new MatchQuery() { Field = "field1", Query = "word1" } },
        Should = new QueryContainer[] { new MatchQuery() { Field = "field2", Query = "word2" } }
    }
};

client.Search<Document>(searchRequest);
var searchRequest=newsearchrequest()
{
Query=newboolquery
{
必须=new QueryContainer[]{new MatchQuery(){Field=“field1”,Query=“word1”},
Should=new QueryContainer[]{new MatchQuery(){Field=“field2”,Query=“word2”}
}
};
客户端搜索(searchRequest);
或流畅的API

client.Search<Document>(s => s
    .Query(q => q
        .Bool(b => b
            .Must(fi => fi
                .Match(m => m
                      .Field("field2")
                      .Query("word2")
                )
            )
            .Should(sh => sh
                .Match(m => m
                      .Field("field1")
                      .Query("word1")
                )
            )
        )
    )
);
client.Search(s=>s
.Query(q=>q
.Bool(b=>b
.Must(fi=>fi
.Match(m=>m
.字段(“字段2”)
.Query(“word2”)
)
)
.Should(sh=>sh
.Match(m=>m
.字段(“字段1”)
.Query(“word1”)
)
)
)
)
);

谢谢。您的回答帮助我理解了使用对象初始化器的必应布尔查询。
client.Search<Document>(s => s
    .Query(q => q
        .Bool(b => b
            .Must(fi => fi
                .Match(m => m
                      .Field("field2")
                      .Query("word2")
                )
            )
            .Should(sh => sh
                .Match(m => m
                      .Field("field1")
                      .Query("word1")
                )
            )
        )
    )
);