ElasticSearch學習日誌(一)

        搜索程序通常由索引鏈和搜索組件組成。linux

        索引鏈主要是先檢索原始內容,再根據原始內容來建立對應的文檔,並對建立的文檔進行索引;數據庫

        搜索組件用於接收用戶的查詢請求並響應結果,通常由用戶接口、構建可編程查詢語句的方法、查詢語句執行引擎及結果展現組件組成。編程

    

 1、ES的基本概念vim

          索引(Index)安全

        ES 將數據存儲於一個或多個索引中,索引是具備相似特性的文檔的集合。同傳統數據庫對比來看,索引至關於SQL中的一個「數據庫」,並經過引用此名稱完成文檔的建立、搜索、更新及刪除操做。一個ES集羣中能夠按需建立任意數據的索引。app

        類型(Type)curl

        類型是索引內部的邏輯分區(category/partition),就是爲擁有相同的域的文檔作的預約義,所以一個索引內部可定義一個或多個類型。例如,在索引中,能夠定義一個用於存儲用戶數據的類型,一個存儲日誌數據的類型,以及一個存儲評論數據的類型。類比傳統庫,類型至關於「表」。elasticsearch

        文檔(Document)工具

        文檔是Lucence索引和搜索的原子單位,它是包含了一個或多個域的容器,基於JSON格式進行表示。文檔由一個多個域組成,每一個域擁有一個名字及一個或多個值,有多個值的域一般稱爲「多值域」。每一個文檔能夠存儲不一樣的域集,但同一類型下的文檔在結構上有某種程度上的類似之處,類比傳統庫,文檔至關於「記錄」,能夠擁有多條記錄。性能

        映射(Mapping)

        ES中,全部的文檔在存儲以前都要首先進行分析。用戶可根據須要定義如何將文本分割成token、哪些token應該被過濾掉,以及哪些文本須要進行額外處理等等。另外,ES還提供了額外功能,例如將域中的內容按需排序。事實上,ES也能自動根據其值肯定域的類型。

        節點(Node)

        運行了單個實例的ES主機稱爲節點,它是集羣的一個成員,能夠存儲數據、參與集羣索引及搜索操做。相似於集羣,節點靠其名稱進行標識,默認爲啓動時自動生成的隨機marvel字符串名稱--注(marvel是ES的管理可監控工具,「隨機marvel字符串名稱」有點疑問)。用戶能夠按須要自定義任何但願使用的名稱,可是出於管理的目的,此名稱應該被設置成較好的識別性。節點經過爲其配置的ES集羣名稱肯定其所要加入的集羣。

        分片(Shard)和副本(Replica)

        ES的「分片(shard)」機制可將一個索引內部的數據分佈地存儲於多個節點,它經過將一個索引切分爲多個底層物理的Lucene索引完成索引數據的分割存儲功能,每個物理的Lucene索引成爲一個分片(shard)。每一個分片其內部都是一個全功能且獨立的索引,所以可由集羣中的任何主機存儲。建立索引時,用戶可指定其分片的數量,默認數量爲5個。

        Shard有兩種類型:primary和replica,即主shard及副本shard。primary shard用於文檔存儲,每一個新的索引會自動建立5個primary shard,固然此數量可在索引建立以前經過配置自行定義,不過,一旦建立完成,其primary shard的數量將不可更改。replica shard是primary shard的副本,用於冗餘數據集提升搜索性能。每一個primary shard默認配置一個replica shard,但也能夠配置多個,且其數量可動態更改。ES會根據須要自動增長或減小replica shard的數量。

 2、安裝elasticsearch

        https://www.elastic.co/downloads/elasticsearch 下載5.4.3版本。解壓運行es前,必須安裝jdk1.8+

        在linux下運行es,會遇到root權限的問題。

        

        兩種解決方式:

        一、建立新用戶,因爲安全問題,es不容許root用戶直接運行,要建立新用戶

            adduser es_user

            passwd xxxxx

            chown -hR es_user /usr/local/src/es/elasticsearch-5.4.3

            su es_user 後 cd至es目錄./bin/elasticsearch

        

             至此es成功啓動。

             若是報錯以下:

        

            需修改sysctl的配置,vim /etc/sysctl.conf

            添加vm.max_map_count = 262144,而後生效配置文件 sudo /etc/sysctl.conf -p

            對於第一個錯誤max file,見以下截圖

        

            正常啓動的狀況下,輸入curl 'http://***:9200/' 會出現以下結果

       

            二、修改es的屬性,以支持root啓動

            2.1)在執行es時加上參數-Des.insecure.allow.root=true(網上推薦)

         

            注:這種方式有錯誤,提供D不是有效的屬性

            2.2)ES_JAVA_OPTS="-Des.insecure.allow.root=true"   修改elasticsearch執行文件(網上推薦)

            注:這種方式依然不奏效

            https://discuss.elastic.co/t/elasticsearch-5-1-1-cannot-run-as-root-user/70304/7 

            彷佛從5.0+的版本後es再也不容許root運行應用,只能採用第一種方式,建立新用戶。

相關文章
相關標籤/搜索