.Net NEST 的 Elasticsearch DSL 查询
Elasticsearch DSL query to .Net NEST
我正在尝试将下面的弹性搜索 DSL 转换为 NEST 查询,我使用的是 elasticsearch 5.2 版
GET articles/_search
{
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "FIY",
"fields": [
"title"
]
}
},
{
"nested": {
"path": "tags",
"query": {
"terms": {
"tags.tagName": [
"competition"
]
}
}
}
}
]
}
}
}
到目前为止我已经得到了下面的内容,我知道过滤器部分不应该在那里,但是没有它我似乎无法添加嵌套部分
var result = client.Search<Article>(x => x
.Query(q => q
.Bool(b => b
.Must(m => m
.MultiMatch(mp => mp
.Query(query)
.Fields(f => f
.Fields(f1 => f1.Title, f2 => f2.Content, f3 => f3.Tags))))
.Filter(f => f
.Nested(n => n
.Path("tags")
.Query(q1 => q1
.Terms(t1 => t1.Field(f2 => f2.Tags).Terms(tags))
))))));
您不需要使用 Filter.Just 将 Nested 添加到 Must Query
var result = client.Search<Article>(x => x
.Query(q => q
.Bool(b => b
.Must(m => m
.MultiMatch(mp => mp
.Query(query)
.Fields(f => f
.Fields(f1 => f1.Title, f2 => f2.Content, f3 => f3.Tags)),
m=> m.Nested(n => n
.Path("tags")
.Query(q1 => q1
.Terms(t1 => t1.Field(f2 => f2.Tags).Terms(tags))
)))));
我正在尝试将下面的弹性搜索 DSL 转换为 NEST 查询,我使用的是 elasticsearch 5.2 版
GET articles/_search
{
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "FIY",
"fields": [
"title"
]
}
},
{
"nested": {
"path": "tags",
"query": {
"terms": {
"tags.tagName": [
"competition"
]
}
}
}
}
]
}
}
}
到目前为止我已经得到了下面的内容,我知道过滤器部分不应该在那里,但是没有它我似乎无法添加嵌套部分
var result = client.Search<Article>(x => x
.Query(q => q
.Bool(b => b
.Must(m => m
.MultiMatch(mp => mp
.Query(query)
.Fields(f => f
.Fields(f1 => f1.Title, f2 => f2.Content, f3 => f3.Tags))))
.Filter(f => f
.Nested(n => n
.Path("tags")
.Query(q1 => q1
.Terms(t1 => t1.Field(f2 => f2.Tags).Terms(tags))
))))));
您不需要使用 Filter.Just 将 Nested 添加到 Must Query
var result = client.Search<Article>(x => x
.Query(q => q
.Bool(b => b
.Must(m => m
.MultiMatch(mp => mp
.Query(query)
.Fields(f => f
.Fields(f1 => f1.Title, f2 => f2.Content, f3 => f3.Tags)),
m=> m.Nested(n => n
.Path("tags")
.Query(q1 => q1
.Terms(t1 => t1.Field(f2 => f2.Tags).Terms(tags))
)))));