• 创建索引CreateIndex


    nuget引用NEST

    new一个客户端

    源码可查ElasticClient.cs

    new一个ElasticClient有多种方式

    第一种

    ES地址是http://localhost:9200,可以直接new,如下所示

    var client = new ElasticClient();
    

    源码中显示 new ElasticClient()

    public ElasticClient() : this(new ConnectionSettings(new Uri("http://localhost:9200"))) { }
    

    第二种

    由此可以推断一下,如果本地安装的使用不是9200端口或者远程连接ES服务端,可以这么写

    string uri = "http://example.com:9200";
    var settings = new ConnectionSettings(new Uri(uri)).
                DefaultIndex("people");
    
    var client = new ElasticClient(settings);
    

    第三种

    Uri uri = new Uri("http://example.com:9200");
    var client = new ElasticClient(uri);
    

    第四种 连接池

    这里只举例官方文档中推荐使用的SniffingConnectionPool
    SniffingConnectionPool线程安全,开销很小,允许运行时reseeded。不明白reseeded的运行机制,留个疑问。

            public static ElasticClient GetElasticClientByPool()
            {
                var uris = new[]
                {
                    new Uri("http://localhost:9200"),
                    new Uri("http://localhost:9201"),
                    new Uri("http://localhost:9202"),
                };
    
                var connectionPool = new SniffingConnectionPool(uris);
                var settings = new ConnectionSettings(connectionPool)
                    .DefaultIndex("people");
    
                var client = new ElasticClient(settings);
    
                return client;
            }
    

    参考:elastic官方文档

    创建索引

    判断索引是否存在

    var existsResponse = _elasticClient.IndexExists(_indexName);
    var indexExists = existsResponse.Exists 
    

    indexExists 为true,索引存在;为false,索引不存在。

    创建索引并初始化索引配置和结构

                    //基本配置
                    IIndexState indexState = new IndexState
                    {
                        Settings = new IndexSettings
                        {
                            NumberOfReplicas = 1,//副本数
                            NumberOfShards = 6//分片数
                        }
                    };
    
                    ICreateIndexResponse response = _elasticClient.CreateIndex(_indexName, p => p
                        .InitializeUsing(indexState)
                        .Mappings(m => m.Map<People>(r => r.AutoMap()))
                    );
    
                    if (response.IsValid)
                    {
                        Console.WriteLine("索引创建成功");
                    }
                    else
                    {
                        Console.WriteLine("索引创建失败");
                    }
    

    注意:索引名称必须为小写,如果含有大写字母,异常信息为"Invalid index name [TEST], must be lowercase"

    demo地址:CreateIndex

  • 相关阅读:
    C# post请求 HttpWebRequest
    C# 获取当前路径
    计算n的阶乘
    查找2-n之间素数的个数
    循环嵌套-打印不定长特殊*号图形
    流程控制-物流费用计算(嵌套if)
    基于Arduino的按键控制LED实验
    基于Arduino的红外遥控
    PS/2的相关知识
    Arduino_URO端口与AtMega328p引脚对应图
  • 原文地址:https://www.cnblogs.com/AlienXu/p/10524333.html
Copyright © 2020-2023  润新知