c# - Elasticsearch Nest C#编译器错误

标签 c# elasticsearch nest

我正在尝试测试创建索引,添加文档并使用过滤器进行搜索。我遇到了似乎无法解决的编译器错误。谢谢你的帮助!

编译器错误(VS 2013,控制台应用程序):

“表达式树可能不包含动态操作。”

当我双击该错误时,它将在代码的.Filter行中突出显示“t.User”。

这是完整的代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Runtime.Remoting.Metadata.W3cXsd2001;
using System.Text;
using System.Threading.Tasks;
using Nest;

namespace elastic_search_client_app
{
    class Post
    {
        public int Id;

        public string User;

        public DateTime PostDate;

        public String Message;
    }

    class Program
    {
        static void Main(string[] args)
        {
            var uri = new Uri("http://es-server-name"); 

            var settings = new ConnectionSettings(uri).SetDefaultIndex("stack-overflow-posts");

            var client = new ElasticClient(settings);

            var post = new Post() { Id = 2, User = "mk@microsoft.com", PostDate = DateTime.Now, Message = "This is pretty cool and lot of text stuff here from catalog summary collection" };

            client.Index(post);

            client.Refresh();

            var result = client.Search<dynamic>(s => s
                .Index("stack-overflow-posts")
                .AllTypes()
                .Query(q =>
                    q.QueryString(qs =>
                        qs.Query("cool")))
                .Filter(f => f.Term(t => t.User, "mk@microsoft.com")));
        }
    }  
}

最佳答案

An expression tree may not contain a dynamic operation.

该错误非常简单。

编译后的过滤器查询表达式t => t.User, "mk@microsoft.com"具有Expression<Func<T, object>> fieldDescriptor, object term)的签名。

编译器无法推断T,因为T的类型为dynamic

您可以将查询的类型更改为client.Search<Post>或使用string重载。
var result = client.Search<dynamic>(s => s
    .Index("stack-overflow-posts")
    .AllTypes()
    .Query(q =>
        q.QueryString(qs =>
            qs.Query("cool")))
    .Filter(f => f.Term("user", "mk@microsoft.com")));

关于c# - Elasticsearch Nest C#编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28597850/

相关文章:

c# - 线程化 HTTP Post 应用程序

php - cURL 已安装,但仍然出现此错误 Elasticsearch-PHP 需要 cURL 或自定义 HTTP 处理程序

elasticsearch - 配置logstash:多个输入

elasticsearch - 通用策略类型返回

c# - 插入数据并用新数据刷新数据网格后关闭弹出窗口

c# - 使用 Ninject 在具有多个具有相同基本类型的存储库的类中分配正确的存储库

elasticsearch - elasticsearch nest:获取SearchRequest的数字结果

c# - 当每个索引只能有一个映射时,将渗透器存储在单独的索引中吗?

c# - @Html.ValidationMessageFor 在我尝试编辑项目时崩溃

elasticsearch - 如何从Elasticsearch中找到最常用的查询?