Elasticsearch----下載安裝


1、下載安裝

elasticsearch 啟動時候回占用大量內存(2G左右),啟動成功后,內存會慢慢釋放掉一些

windows

  下載地址:https://www.elastic.co/cn/downloads/elasticsearch

  進入elasticsearch的bin目錄,雙擊elasticsearch.bat啟動服務,默認端口是9200

  如果啟動不了:config/elasticsearch.yml 中添加 xpack.ml.enabled: false

linux:可以直接使用docker部署

 閱讀文檔:

  https://es.xiaoleilu.com/index.html

  https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html

       https://www.elastic.co/guide/en/elasticsearch/reference/7.2/modules-scripting-painless.html 

配置

  1、elasticsearch.yml,注意設置elasticsearch.yml是UTF-8的字符編碼)

#ES可以配置集群,這個就是集群的名稱(一個集群通用這個名字)
cluster.name: xuecheng
#設置當前的服務在集群中的節點名稱(不能重復)
node.name: xc_node_1
#設置綁定主機的ip地址,設置為0.0.0.0表示綁定任何ip,允許外網訪問,生產環境建議設置為具體 的ip
network.host: 0.0.0.0
#服務端口(使用http訪問)
http.port: 9200
#ES集群內部之間相互訪問的接口
transport.tcp.port: 9300
#指定該節點是否有資格被選舉成為master結點,默認是true,如果原來的master宕機會重新選舉新 的master
node.master: true
#指定該節點是否存儲索引數據,默認為true。
node.data: true
#配置集群
discovery.zen.ping.unicast.hosts: ["0.0.0.0:9300", "0.0.0.0:9301"]
#設置ES自動發現節點連接超時的時間,默認為3秒,如果網絡延遲高可設置大些。
discovery.zen.ping_timeout: 3s
#主結點數量的最少值 ,此值的公式為:(master_eligible_nodes / 2) + 1 ,比如:有3個符合要求的主結點,那么這 里要設置為2。
discovery.zen.minimum_master_nodes: 1
#是否允許成為協調節點
node.ingest: true
#設置為true可以鎖住ES使用的內存,避免內存與swap分區交換數據。
bootstrap.memory_lock: false
#單機允許的最大存儲結點數,通常單機啟動一個結點建議設置為1,開發環境如果單機啟動多個節點可設置大於1.
node.max_local_storage_nodes: 2

path.data: D:\ElasticSearch\elasticsearch-6.2.1-1\data
path.logs: D:\ElasticSearch\elasticsearch-6.2.1-1\logs

#開啟cors跨域訪問支持
http.cors.enabled: true
#(允許所有域名)以上,使用正則
http.cors.allow-origin: /.*/

    更多時間

discovery.zen.ping_timeout
discovery.zen.fd.ping_timeout
discovery.zen.join_timeout
discovery.zen.publish_timeout
discovery.zen.commit_timeout

  2、jvm.options

設置最小及最大的JVM堆內存大小:在jvm.options中設置 -Xms和-Xmx:
1) 兩個值設置為相等
2) 將 Xmx 設置為不超過物理內存的一半。 默認是1g

  3、log4j2.properties

生產環境,注意最好配置error 

  4、在linux上根據系統資源情況,可將每個進程最多允許打開的文件數設置大些。

  將下面的配置添加到 /etc/security/limits.conf
elasticsearch ‐ nofile 65536

啟動報錯

  其他錯誤參考:https://blog.csdn.net/qq_34409255/article/details/84974280

  當在配置文件配置了 network.host: 0.0.0.0,報錯:JVM is using the client VM [Java HotSpot(TM) Client VM] but should be using a server VM for the best performance

  解決修改java運行環境 D:\java\jdk1.8.0_201\jre\lib\i386\jvm.cfg

    

概念

  了解參考:https://www.cnblogs.com/jajian/p/9801154.html

  對Elastcisearch描述

  • 分布式的實時文件存儲,每個字段都被索引並可被搜索
  • 分布式的實時分析搜索引擎
  • 可以擴展到上百台服務器,處理PB級結構化或非結構化數據

  ElasticSearch 的實現原理主要分為以下幾個步驟,首先用戶將數據提交到Elastic Search 數據庫中,再通過分詞控制器去將對應的語句分詞,將其權重和分詞結果一並存入數據,當用戶搜索數據時候,再根據權重將結果排名,打分,再將返回結果呈現給用戶。底層基於Lucene。

  Elasticsearch是與名為Logstash的數據收集和日志解析引擎以及名為Kibana的分析和可視化平台一起開發的。這三個產品被設計成一個集成解決方案,稱為“Elastic Stack”(以前稱為“ELK stack”)。

  面向文檔的,使用json作為文檔序列化格式。

全文檢索、倒排索引(示意圖)

倒排索引就是講數據中的詞拆分構建一個大表,將關鍵字拆出來,后面帶上這個文章的documentid號,通過關鍵詞可以找到對應的文章

全文檢索就比較好理解的,就是當我們輸入“全瓦解”,會被拆分成”全”,“瓦解”2個此,用2個詞去倒排索引里面去檢索數據,檢索到的數據返回。整個過程就叫做全文檢索 

lucene

lucene.就是一個jar包,里面包含(封裝好的各種建立倒排索引,以及進行搜索的代碼,包含各種算法、我們用java開發的時候,引人lucene jar,然后基於lucene的api開發即可,用lucene,我們就可以去將已有的數據建立索引,lucene會在本地磁盤上面,給我們組織索引的數據結構。另外的話,我們也可以用lucene提供的一些功能和api來針對磁盤上的索引數據,進行搜索。

 

Elasticsearch

 

 

1.自動維護數據的分布到多個節點索引的建立,還有搜索請術分布到多個節點的執行
2.自動維護數據的冗余副本,包證說,一些機器宕機了,不會丟失任何的數據
3.封裝了更多的高級功能,以給我們提供更多高級的支持,讓我們快速的開發應用,開發更加復雜的應用,復雜的搜索功能,聚合分析的功能,基於地理位置的搜素(距離我當前位置1公里以內的烤內店)

 

 

shard和replica

shard:單機器無法存儲大量數據,es可以將一個索引中的數據切分為多個shard,分布在多台服務器上存儲。有了shard就可以橫向擴展,存儲更多數據,讓搜索和分析等操作分不到多態服務器上去執行,提高吞吐量和性能。,每一個share都是一個Lucene index
replica:任何服務器隨時可能故障或宕機,此時shard可能就會丟失,因此可以為每個shard創建多個replica副本。replica可以在shard故障時提供備用服務,保證數據不丟失,多個replica還可以提供檢索操作的吞吐量和性能。primary share(建立索引時一次設置,不能修改,默認5個),replica shard(隨時修改數重,默認1個,默認每個索引10個shard,5個primary shard,5個replica shard,最小的高可用配置,是2台服務器。

 

index(索引)和type(類型)和document(文檔)

ES中document相當數據庫中的一行。

ES中的type相當數據庫中的表

ES中的index(名詞)相當數據庫中的數據庫,index(動詞):往ES中存入數據

 

使用

windows啟動

啟動命令(進入bin目錄)

elasticsearch.bat

如果出現

ElasticsearchException[X-Pack is not supported and Machine Learning is not available for [windows-x86]; you can use the other X-Pack features (unsupported) by setting xpack.ml.enabled: false in elasticsearch.yml錯誤

解決:在elasticsearch.yml配置文件最后添加,重新啟動

xpack.ml.enabled: false

訪問瀏覽器

http://127.0.0.1:9200/

 出現,表示啟動成功

{
  "name" : "xxxx-PC",    //表示node(節點名稱):在哪一台服務器上啟動
  "cluster_name" : "elasticsearch", //集群名稱,如果需要修改,在conf/elasticsearch.yml中修改
  "cluster_uuid" : "SSOU_2kJSW6xsHZFwfLrhg",
  "version" : {
    "number" : "7.2.0",
    "build_flavor" : "default",
    "build_type" : "zip",
    "build_hash" : "508c38a",
    "build_date" : "2019-06-20T15:54:18.811730Z",
    "build_snapshot" : false,
    "lucene_version" : "8.0.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

  

使用kibana

Kibana是一個開源的分析和可視化平台,設計用於和Elasticsearch一起工作。

啟動(bin目錄下)

kabana.bat

打開瀏覽器

http://localhost:5601

使用開發工具(dev tools)操作下面的命令

 


免責聲明!

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



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