C# 在Elasticsearch中使用variours分析器变得模棱两可

C# 在Elasticsearch中使用variours分析器变得模棱两可,c#,linq,C#,Linq,我试图在Elasticsearch的程序中添加一些分析器。 但在添加.Property时显示错误,例如 错误1“Nest.CreateIndexDescriptor”不包含“Property”的定义,并且找不到接受“Nest.CreateIndexDescriptor”类型的第一个参数的扩展方法“Property”(是否缺少using指令或程序集引用?) 你能帮我解决这个问题吗 using System; using System.Collections.Generic; using Syste

我试图在Elasticsearch的程序中添加一些分析器。 但在添加
.Property
时显示错误,例如

错误1“Nest.CreateIndexDescriptor”不包含“Property”的定义,并且找不到接受“Nest.CreateIndexDescriptor”类型的第一个参数的扩展方法“Property”(是否缺少using指令或程序集引用?)

你能帮我解决这个问题吗

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Nest;
using System.Data;
using System.Diagnostics;
using Microsoft.CSharp.RuntimeBinder;
using System.IO;

namespace MenuAnalyzer2
{
     public class Program
    {
        public static Uri node;
        public static ConnectionSettings settings;
        public static ElasticClient client;

        static void Main(string[] args)
        {
            node = new Uri("http://localhost:9200");
            settings = new ConnectionSettings(node, defaultIndex: "asd");
            client = new ElasticClient(settings);

            var indexsettings = new IndexSettings();
            indexsettings.NumberOfReplicas =1;
            indexsettings.NumberOfShards = 6;

            client.CreateIndex("asd", c => c
                .Index("asd")
                .InitializeUsing(indexsettings)
                .Property(prop => prop
                    .MultiField(mf => mf
                        .Name(p => p.Name)
                        .Fields(f => f
                            .String(
                                s =>
                                    s.Name(n => n.Name)
                                        .IndexAnalyzer("autocomplete_analyzer")
                                        .IncludeInAll(false)
                                        .Index(FieldIndexOption.NotAnalyzed))
                            .String(
                                s =>
                                    s.Name(n => n.Name)
                                        .IndexAnalyzer("fulltext")
                                        .IncludeInAll(false)
                                        .Index(FieldIndexOption.NotAnalyzed))
                        )
                    )
                )
                .AddMapping<Items>(m => m.MapFromAttributes()));


            PerformMatchPhrase();
            Items obj;
            string filepath = "D:\\food.csv";
            DataTable res = ConvertCSVtoDataTable(filepath);
            List<DataRow> list = res.AsEnumerable().ToList();

            foreach (var row in list)
            {  
                    //client = new ElasticClient(settings);
                    obj = new Items();
                    obj.itemID = row.Field<string>("ID");
                    obj.item = row.Field<string>("Foodies");
                    obj.price = row.Field<string>("Amount");
                    obj.ac = row.Field<string>("Ac");
                    client.Index(obj);

            }

        }

        public static DataTable ConvertCSVtoDataTable(string strFilePath)
        {
            StreamReader sr = new StreamReader(strFilePath);
            string[] headers = sr.ReadLine().Split(',');
            DataTable dt = new DataTable();
            foreach (string header in headers)
            {
                dt.Columns.Add(header);
            }
            while (!sr.EndOfStream)
            {
                string[] rows = sr.ReadLine().Split(',');
                DataRow dr = dt.NewRow();
                for (int i = 0; i < headers.Length; i++)
                {
                    dr[i] = rows[i];
                }
                dt.Rows.Add(dr);
            }
            return dt;
        }

          public static void PerformMatchPhrase()
        {
            List<Items> mat = new List<Items>();
            var result =
                client.Search<Items>(s => s
               .Query(q => q.MatchPhrase(m => m.OnField("item").Query("masala"))));
                //.Query(q => q.MatchAll("postText"))));
            if(result!=null)
            {
                if (result.Documents.Count <Items>()> 0)
                    mat = result.Documents.ToList <Items>();
            }
            foreach(Items m in mat)
            {
                Console.WriteLine(m.itemID);
                Console.WriteLine(m.item);
                Console.WriteLine(m.price);
                Console.WriteLine(m.ac);
            }
            Console.ReadLine();

        }

    }
}`
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
利用鸟巢;
使用系统数据;
使用系统诊断;
使用Microsoft.CSharp.RuntimeBinder;
使用System.IO;
名称空间菜单分析器2
{
公共课程
{
公共静态Uri节点;
公共静态连接设置;
公共静态弹性客户端;
静态void Main(字符串[]参数)
{
节点=新Uri(“http://localhost:9200");
设置=新连接设置(节点,默认索引:“asd”);
客户端=新的ElasticClient(设置);
var indexsettings=新的indexsettings();
indexsettings.NumberOfReplicas=1;
indexsettings.NumberOfShards=6;
CreateIndex(“asd”,c=>c
.索引(“asd”)
.初始化(索引设置)
.Property(prop=>prop
.MultiField(mf=>mf
.Name(p=>p.Name)
.Fields(f=>f
.字符串(
s=>
s、 名称(n=>n.Name)
.IndexAnalyzer(“自动完成分析仪”)
.includenall(假)
.Index(FieldIndexOption.notanalysis))
.字符串(
s=>
s、 名称(n=>n.Name)
.索引分析器(“全文”)
.includenall(假)
.Index(FieldIndexOption.notanalysis))
)
)
)
.AddMapping(m=>m.MapFromAttributes());
PerformMatchPhrase();
项目obj;
string filepath=“D:\\food.csv”;
DataTable res=convertcsvtodatable(文件路径);
列表=res.AsEnumerable().ToList();
foreach(列表中的变量行)
{  
//客户端=新的ElasticClient(设置);
obj=新项目();
obj.itemID=行字段(“ID”);
obj.item=行字段(“Foodies”);
对象价格=行字段(“金额”);
obj.ac=行字段(“ac”);
客户索引(obj);
}
}
公共静态数据表ConvertCSVTodatable(字符串strFilePath)
{
StreamReader sr=新的StreamReader(strFilePath);
string[]headers=sr.ReadLine().Split(',');
DataTable dt=新的DataTable();
foreach(标头中的字符串标头)
{
dt.Columns.Add(表头);
}
而(!sr.EndOfStream)
{
string[]rows=sr.ReadLine().Split(',');
DataRow dr=dt.NewRow();
for(int i=0;is
.Query(q=>q.MatchPhrase(m=>m.OnField(“item”).Query(“masala”)));
//.Query(q=>q.MatchAll(“postText”));
如果(结果!=null)
{
如果(result.Documents.Count()>0)
mat=result.Documents.ToList();
}
foreach(垫子中的项目m)
{
控制台写入线(m.itemID);
控制台写入线(m.item);
控制台写入线(m.price);
控制台写入线(m.ac);
}
Console.ReadLine();
}
}
}`