Elasticsearch NEST 翻译
Elasticsearch NEST Translation
我的搜索给出了正确的结果并试图让它在 .NET Nest 中工作,但我似乎无法获得正确的语法。这是我的 elastricsearch 查询:
{
"query": {
"filtered": {
"query": {
"match": { "formattedName": "Michael" }
},
"filter": {
"bool": {
"must": [
{ "term": { "projectId": "5022" } },
{ "term": { "isInvalid": "false" } }
]
}
}
}
}
}
在我的解决方案中,我有以下内容:
var lst = client.Search<EntitySearchItem>(s => s
.Size(recordCount)
.Index("entitysearch")
.Filter(f => f
.Bool(b => b
.Must(m => m.Term("projectId", projectId),
m => m.Term("isInvalid", "false"))))
.Query(q => q
.Match(p => p.OnField(f => f.FormattedName).Query(name))));
有熟悉 Nest 的人知道我怎样才能得到相同的结果吗?谢谢!
示例中的 elasticsearch 查询使用 filtered query。您可以像这样使用 NEST 创建一个:
var searchResponse = client.Search<EntitySearchItem>(s => s
.Index("entitysearch")
.Query(q => q
.Filtered(f => f
.Query(qq => qq
.Match(m => m.OnField(field => field.FormattedName).Query(name)))
.Filter(ff => ff.Bool(b => b
.Must(m => m.Term(t => t.ProjectId, projectId), m => m.Term(t => t.IsInvalid, "false")))))));
我的EntitySearchItem
class
public class EntitySearchItem
{
public string ProjectId { get; set; }
public string IsInvalid { get; set; }
public string FormattedName { get; set; }
}
我的搜索给出了正确的结果并试图让它在 .NET Nest 中工作,但我似乎无法获得正确的语法。这是我的 elastricsearch 查询:
{
"query": {
"filtered": {
"query": {
"match": { "formattedName": "Michael" }
},
"filter": {
"bool": {
"must": [
{ "term": { "projectId": "5022" } },
{ "term": { "isInvalid": "false" } }
]
}
}
}
}
}
在我的解决方案中,我有以下内容:
var lst = client.Search<EntitySearchItem>(s => s
.Size(recordCount)
.Index("entitysearch")
.Filter(f => f
.Bool(b => b
.Must(m => m.Term("projectId", projectId),
m => m.Term("isInvalid", "false"))))
.Query(q => q
.Match(p => p.OnField(f => f.FormattedName).Query(name))));
有熟悉 Nest 的人知道我怎样才能得到相同的结果吗?谢谢!
示例中的 elasticsearch 查询使用 filtered query。您可以像这样使用 NEST 创建一个:
var searchResponse = client.Search<EntitySearchItem>(s => s
.Index("entitysearch")
.Query(q => q
.Filtered(f => f
.Query(qq => qq
.Match(m => m.OnField(field => field.FormattedName).Query(name)))
.Filter(ff => ff.Bool(b => b
.Must(m => m.Term(t => t.ProjectId, projectId), m => m.Term(t => t.IsInvalid, "false")))))));
我的EntitySearchItem
class
public class EntitySearchItem
{
public string ProjectId { get; set; }
public string IsInvalid { get; set; }
public string FormattedName { get; set; }
}