zoukankan      html  css  js  c++  java
  • 创建索引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

  • 相关阅读:
    Css-深入学习之弧形切角矩形
    Css-深入学习之切角
    Css-深入学习之三角形气泡窗
    Javascript-对HTML5 <progress> 标签操作
    Centos6.5 Squid3.1.10代理服务器(用户认证,加密,高匿)及使用指南
    python 管理ssh客户端
    win7 centos6.5 ubuntu三系统硬盘安装
    centos vncserver
    vi 详解
    nginx 日志格式
  • 原文地址:https://www.cnblogs.com/AlienXu/p/10524333.html
Copyright © 2011-2022 走看看