簡介 ElasticSearch


ElasticSearch 一般用於分詞,訂單查詢,跨庫查詢,低代碼編程

es 的api 操作 put  /索引名稱/類型名稱/文檔id    ---創建文檔

post /索引名稱/類型名稱------ 創建文檔(隨機id)

post  /索引名稱/類型名稱/文檔id /_update   ---修改文檔

Get  /索引名稱/類型名稱/文檔id----- 查詢通過id

Post /索引名稱/類型名稱 /_search   ----查詢所有

自定義ik分詞器 

1解壓ik安裝包 

2 在es中plugins 目錄新建ik 文件夾,IK安裝包復制過去

3然后重啟es

GET _analyze{ "analyzer": "ik_max_word",  "text":"我喜歡睡你"}

.1編寫自己的字典

2.修改ik/config/IKAnalyzer.cfg.xml

3.驗證效果GET _analyze{ "analyzer": "ik_max_word",  "text":"我喜歡睡你"}

 

3 數據類型

字符串:text,keyword 數值: long,integer,short,byte,double,float,half float,scaled float日期類型:date布爾類型:boolean 二進制類型:binary 等等....

4 創建索引約束類型

PUT /test2{ "mappings": {}}

 

4.ElasticSearch索引的思路:
它是通過各種各樣的變態到極致的算法還有數據結構,實現讓內存中的數據少量,然后表示更多的數據(快大),在通過跳躍表的方式實現快速的根據我們聯合查詢的多個集合,找到交集,並集,還有差集

 

環境搭建

 

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms1024m -Xms1024m 
  elasticsearch:7.2.0
 
docker run -p 5601:5601 -d -e ELASTICSEARCH_URL=http://192.168.3.204:9200   -e ELASTICSEARCH_HOSTS=http://192.168.3.204:9200 kibana:7.2.0  

 

5net core 對接   nuget 包NEST 

   public void Indexinit()
        {/// 初始化准備數據

            var settings = new ConnectionSettings(new Uri(EsUrl.esurl))///創建鏈接
            .DefaultIndex("orders");///創建庫
            var client = new ElasticClient(settings);
            List<OrderInfo> orderInfos = new List<OrderInfo>();
            for (int i = 0; i < 20; i++)
            {
                peson p = new peson()
                {
                    Age = i,
                    Id = i,
                    Name = "aaa" + i
                };

                orderInfos.Add(new OrderInfo()
                {

                    Orderid = Guid.NewGuid().ToString(),
                    ActionTime = DateTime.UtcNow.AddMinutes(-15),
                    Name = "json" + i,
                    Address = "上海",
                    Status = "購物車",
                     Peson=p
     
                });
            }
         
            client.IndexMany<OrderInfo>(orderInfos);
        }

  查詢

    public void seach()
        {
            var settings = new ConnectionSettings(new Uri(EsUrl.esurl))
       .DefaultIndex("people");
            var client = new ElasticClient(settings);
            var searchResponse = client.Search<OrderInfo>(s => s
                 .From(0)
     .Size(10)
         .Query(q => q
                      .Match(m => m
                         .Field(f => f.Name)
                         .Query("陳曉勇")
                      )
                 )
             );
            var people = searchResponse.Documents;
            Console.WriteLine("查詢結果");
            foreach (var item in people)
            {
                Console.WriteLine($"id:{item.Orderid},firstname:{item.Name},lastname:{item.Status}");
            }
        }

 

 

 集群搭建 注意點

 docker 需要調節配額

.調高jvm線程數限制vim /etc/sysctl.conf加入
vm.max_map_count=262144執行生效
sysctl -Pl
Ⅰ●
或者直接執行下面代碼
sysctl -w vm.max_map_count=262144

 

5個分片 1個副本  3個節點 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM