C#Elasticsearch NEST无法转换Lambda表达式
我在这里遇到了完全相同的问题(这里没有回答)(ElasticSearch NESTSearch)
我用:
.NET Framework 4.5;
ASP.NET MVC 5;
Elasticsearch 1.6.0(在服务器上);
Elasticsearch.NET 1.6.1
巢1.6.1
我有一个MVC控制器,它具有两个动作:
索引-包含HTML UI表单
搜索-包含Elasticsearch.NET客户端和查询。
public ActionResult Search(SearchCreteria sc)
{
Settings settings = new Settings();
Client client = new Client(settings);
ElasticsearchClient esClient = client.Get();
var test = esClient.Search
(body => body.Query(query => query.QueryString(qs => qs.Query(“test”)))); return View(test);
}
整个“ body = > body.Query(query => query.QueryString(qs => qs.Query(”
test“)))) ”上面代码中的lambda表达式带有红色的下划线,带有以下工具提示:
(参数)身体
错误:
无法将Lambda表达式转换为类型“对象”,因为它不是委托类型
我在问题上进行了搜索,发现在99%的情况下,人们忘记了包含程序集,通常是 。
好吧..我绝对不会忘记添加那个,但是我也许我必须包括一个NEST特定的程序集或类似的东西(我肯定不是,除了NEST本身),所以我决定添加所有我可能有些相关的东西,最后我得到了这个:
using System;using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Mvc;
using WebUI.Models.Concrete;
using Domain.Concrete.Entities;
using Domain.Concrete.Connectivity.Elastic;
using Domain.Concrete.Processors.Elastic;
using Elasticsearch;
using Elasticsearch.Net;
using Elasticsearch.Net.Connection.Configuration;
using Elasticsearch.Net.Connection.RequestState;
using Elasticsearch.Net.Connection.Security;
using Elasticsearch.Net.ConnectionPool;
using Elasticsearch.Net.Exceptions;
using Elasticsearch.Net.Providers;
using Elasticsearch.Net.Serialization;
using Nest;
using Nest.Domain;
using Nest.DSL.Descriptors;
using Nest.DSL.Query;
using Nest.DSL.Query.Behaviour;
using Nest.DSL.Visitor;
using Nest.Resolvers.Converters.Aggregations;
using Nest.Resolvers.Converters.Filters;
using Nest.Resolvers.Converters.Queries;
using Nest.Resolvers.Writers;
它没有按预期提供帮助,但是值得一试。所以现在,我不确定问题出在哪里,任何帮助将不胜感激。
回答:
在问题本身的评论中已经提供了答案,但为将来的Google员工添加了答案。
是准系统的低级ElasticsearchClient
客户端,它仅接受字符串,匿名/动态对象或byte[]
。同样,它也没有响应的返回类型。如此配置后,此客户端支持连接池和节点故障转移。该客户端的80%是自动生成的。
仅当您正在与Elasticsearch进行集成(仅存在少量调用)并且不想引入对eg的依赖项时,此客户端才有用Json.NET
。仅使用此库的示例是Serilog.Sinks.Elasticsearch
高级ElasticClient
客户端的类型占所有请求和响应的99.9%。这是您要使用的客户端的99/100倍。NEST在后台使用Elasticsearch.NET分发请求以更正Elasticsearch
API终结点并使用相同的连接池和故障转移基础结构。
以上是 C#Elasticsearch NEST无法转换Lambda表达式 的全部内容, 来源链接: utcz.com/qa/410694.html