elasticsearch 动态构建的Elasticsearch NEST 5.x搜索查询,elasticsearch,nest,elasticsearch,Nest" /> elasticsearch 动态构建的Elasticsearch NEST 5.x搜索查询,elasticsearch,nest,elasticsearch,Nest" />

elasticsearch 动态构建的Elasticsearch NEST 5.x搜索查询

elasticsearch 动态构建的Elasticsearch NEST 5.x搜索查询,elasticsearch,nest,elasticsearch,Nest,我有以下查询,我使用“&=”逐段/动态构建。Elasticsearch 5.x和Nest 5.x QueryContainer qfilter = null; qfilter = Query<ClassEL>.Term(m => m.OrderID, iOrderID); qfilter &= Query<ClassEL> .Range(r => r .Field(f => f.Distance) .GreaterThan(100))

我有以下查询,我使用“&=”逐段/动态构建。Elasticsearch 5.x和Nest 5.x

QueryContainer qfilter = null;

qfilter = Query<ClassEL>.Term(m => m.OrderID, iOrderID);

qfilter &= Query<ClassEL>
.Range(r => r
  .Field(f => f.Distance)
  .GreaterThan(100))
&&
.Query<ClassEL>.Term(t => t.Active, true);

 var searchDes = new SearchDescriptor<ClassEL>()
 .From(0)
 .Size(10)
 .Query(qfilter);  <===== *** ERROR HERE ***
QueryContainer qfilter=null;
qfilter=Query.Term(m=>m.OrderID,iOrderID);
qfilter&=Query
.范围(r=>r
.字段(f=>f.距离)
.GreaterThan(100))
&&
.Query.Term(t=>t.Active,true);
var searchDes=新的SearchDescriptor()
.从(0)
.尺寸(10)
.查询(qfilter);s
.从(0)
.尺寸(10)
.Query(q=>
q、 术语(t=>t.User,“kimchy”)
||q.Match(mq=>mq.Field(f=>f.User.Query(“嵌套”))
)
);
编辑:使用安德烈的答案就可以了。但是,当我尝试从搜索查询返回结果时,出现了一个问题:

List<ClassViewEL> listDocuments = response.Documents.ToList();
List listDocuments=response.Documents.ToList();
Visual Studio不会立即将其突出显示为错误,但在编译时有一个问题:

错误CS0570: “Nest.ISearchResponse.Documents”是 该语言不支持

调试并选择忽略上述错误工作正常,代码按预期执行,没有问题。但是,编译时错误将阻止代码部署。如何修复此错误

要编辑的解决方案我的项目中的一个依赖项(Newtonsoft.Json.dll)针对的是旧版本,导致出现错误。清理解决方案并重新生成解决方案。

您应该使用
Func
或在单独的方法中传递描述符。例如:

var queryContainer = Query<ClassEL>.Term(x => x.Field(f => f.FirstName).Value("FirstName"));
queryContainer &= Query<ClassEL>.Term(x => x.Field(f => f.LastName).Value("LastName"));

Func<SearchDescriptor<ClassEL>, ISearchRequest> searchFunc = searchDescriptor => searchDescriptor
                                                                                        .Index("indexName")
                                                                                        .Query(q => queryContainer);

var response = _client.Search<ClassEL>(searchFunc);
var queryContainer=Query.Term(x=>x.Field(f=>f.FirstName).Value(“FirstName”);
queryContainer&=Query.Term(x=>x.Field(f=>f.LastName).Value(“LastName”);
Func searchFunc=searchDescriptor=>searchDescriptor
.索引(“索引名称”)
.Query(q=>queryContainer);
var response=\u client.Search(searchFunc);
还是像这样

ISearchRequest ExecuteQuery(SearchDescriptor<ClassEL> searchDescriptor, QueryContainer queryContainer)
{
    return searchDescriptor.Index("indexName")
        .Query(q => queryContainer);
}

public void GetResults()
{
    var queryContainer = Query<ClassEL>.Term(x => x.Field(f => f.FirstName).Value("FirstName"));
    queryContainer &= Query<ClassEL>.Term(x => x.Field(f => f.LastName).Value("LastName"));

    var response = _client.Search<ClassEL>(s => ExecuteQuery(s, queryContainer));
}
ISearchRequestExecuteQuery(搜索描述符搜索描述符,查询容器查询容器)
{
返回searchDescriptor.Index(“indexName”)
.Query(q=>queryContainer);
}
public void GetResults()
{
var queryContainer=Query.Term(x=>x.Field(f=>f.FirstName).Value(“FirstName”);
queryContainer&=Query.Term(x=>x.Field(f=>f.LastName).Value(“LastName”);
var response=_client.Search(s=>ExecuteQuery(s,queryContainer));
}
您应该在单独的方法中使用
Func
或传递描述符。例如:

var queryContainer = Query<ClassEL>.Term(x => x.Field(f => f.FirstName).Value("FirstName"));
queryContainer &= Query<ClassEL>.Term(x => x.Field(f => f.LastName).Value("LastName"));

Func<SearchDescriptor<ClassEL>, ISearchRequest> searchFunc = searchDescriptor => searchDescriptor
                                                                                        .Index("indexName")
                                                                                        .Query(q => queryContainer);

var response = _client.Search<ClassEL>(searchFunc);
var queryContainer=Query.Term(x=>x.Field(f=>f.FirstName).Value(“FirstName”);
queryContainer&=Query.Term(x=>x.Field(f=>f.LastName).Value(“LastName”);
Func searchFunc=searchDescriptor=>searchDescriptor
.索引(“索引名称”)
.Query(q=>queryContainer);
var response=\u client.Search(searchFunc);
还是像这样

ISearchRequest ExecuteQuery(SearchDescriptor<ClassEL> searchDescriptor, QueryContainer queryContainer)
{
    return searchDescriptor.Index("indexName")
        .Query(q => queryContainer);
}

public void GetResults()
{
    var queryContainer = Query<ClassEL>.Term(x => x.Field(f => f.FirstName).Value("FirstName"));
    queryContainer &= Query<ClassEL>.Term(x => x.Field(f => f.LastName).Value("LastName"));

    var response = _client.Search<ClassEL>(s => ExecuteQuery(s, queryContainer));
}
ISearchRequestExecuteQuery(搜索描述符搜索描述符,查询容器查询容器)
{
返回searchDescriptor.Index(“indexName”)
.Query(q=>queryContainer);
}
public void GetResults()
{
var queryContainer=Query.Term(x=>x.Field(f=>f.FirstName).Value(“FirstName”);
queryContainer&=Query.Term(x=>x.Field(f=>f.LastName).Value(“LastName”);
var response=_client.Search(s=>ExecuteQuery(s,queryContainer));
}

请参见问题末尾的“我的编辑”。你曾经遇到过同样的错误吗?这是一个关于编译的不同问题。我没有这样的问题,但已经讨论过了。这正是问题所在,谢谢你给我指出了正确的方向。请看问题末尾的编辑。你曾经遇到过同样的错误吗?这是一个关于编译的不同问题。我没有这样的问题,但已经讨论过了。可能会有帮助这正是问题所在,谢谢你给我指明了正确的方向