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個節點