elasticsearch 嵌套:使用must和should约束构建QueryContainer请求
我尝试构建一个包含must和should请求的elasticsearch请求 我的目标要求如下: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"}} }
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")
)
)
)
)
);