Elasticsearch搜索引擎簡介及單機部署

​1. Elasticsearch簡介

Eladticsearch是一個基於Lucene庫的搜索引擎html

他提供了一個分佈式、支持多用戶的全文搜索引擎,採用的是HTTP接口的方式對外提供服務java

Elasticsearch 是一個實時的分佈式搜索分析引擎,它被用做全文檢索、結構化搜索、分析以及這三個功能的組合node

屬於面向文檔的數據庫python

  • Elasticsearch 是 _面向文檔_ 的,意味着它存儲整個對象或 _文檔。Elasticsearch 不只存儲文檔,並且 索引_每一個文檔的內容使之能夠被檢索。在 Elasticsearch 中,你 對文檔進行索引、檢索、排序和過濾–而不是對行列數據。

搜索原理:

倒排索引:

  • 倒排索引是一種索引方法,被用來存儲在全文搜索下某個單詞在文檔或者一組文檔中的存儲位置的映射。它是文檔檢索系統中最經常使用的數據結構(會對文檔數據進行標準化處理)

相關性排序:

  • 檢索詞頻率:檢索詞在該文檔中出現的次數,出現次數越多,相關性越高
  • 反向文檔頻率:檢索詞在整個文檔中出現的頻率,出現次數越多相關性越低
  • 字段長度準則:長度越長,相關性越低

集羣

  • 節點(node)
  • 一個運行中的Elasticsearch實例稱爲一個節點
  • 每一個節點都知道任意文檔的所處位置,能夠將請求發給任意一個節點(包括主節點),因此主節點不會成爲不會成爲集羣的瓶頸
  • 主節點:當一個節點被選舉成主節點時,它將負責管理集羣範圍內全部變動,例如增長、刪除索引,或者增長刪除節點。而主節點並不須要涉及到文檔級別的變動和搜索等操做。
  • 分片(shard)
  • 一個分片是一個底層的工做單元 它僅保存了 所有數據中的一部分。Elasticsearch 是利用分片將數據分發到集羣內各處的。分片是數據的容器,文檔保存在分片內,分片又被分配到集羣內的各個節點裏。當你的集羣規模擴大或者縮小時, Elasticsearch 會自動的在各節點中遷移分片,使得數據仍然均勻分佈在集羣裏。
  • 主分片(primary shard):索引內的任意一個文檔都屬於一個主分片,因此主分片(按50G時查詢和寫入的性能較好)的數目決定着可以保存的最大數據量
  • 複製分片(replica shard):複製分片是主分片的拷貝。複製分片做爲硬件故障時保護數據不丟失的冗餘備份,併爲搜索和返回文檔等讀操做提供服務。
  • 在索引創建的時候就已經肯定了主分片數,可是副本分片數能夠隨時修改.
  • 每個分片是一個功能完整的搜索引擎,它可使用一個節點上的全部資源的能力。複製分片越多,也將擁有越高的吞吐量
# 設置索引的分片
curl -X PUT IP:9200/庫名 -H 'Content-Type: application/json' -d'
{
   "settings" : {
        "index": {
            "number_of_shards" : 3,
            "number_of_replicas" : 1
        }
   }
}
'
# 修改副分片數量
PUT IP:9200/庫名/_settings {"number_of_replicas" : 2}
# 查看集羣健康狀態
GET IP:9200/_cluster/health

2. ES的單機部署

1、配置網卡(無網環境忽略此條)

vi /etc/sysconfig/network-scripts/ifcfg-*
 BOOTPROTO=static # 修改成靜態網路,能夠不修改
 ONBOOT=yes
systemctl restart network

2、配置本地yum源(有網環境忽略此條)

mkdir /centos7  #存放本地yum源
mount /iso  ./tmp  #將iso鏡像掛載到本地文件中
cp -vrf ./tmp/* /centos7 #將掛載後到本地文件copy到本地yum源文件中
cd /etc/yum.repos.d  
mv ./CentOS-* /root/tmp #移除yum到網絡源信息
vi yum.repo  #編寫本地yum
 [centos7-yum]
 name="yum.local"
 baseurl=file:///centos7
 gpgcheck=0
 enabled=1
yum clean all  #刷新緩存
rm -rf /var/cache/yum
yum list  #顯示數據則表示本地yum配置成功
yum install net-tools #安裝net-tools,查看ifconfig
注意:

本地掛載完鏡像以後,若是還要使用該文件的話,必須先umount該文件,不然會報錯,提示權限不夠linux

3、關閉防火牆及selinux

systemctl disable firewalld
systemctl stop firewalld
vi /etc/sysconfig/selinux
 SELINUX=disabled
setenforce 0
getenforce
注意:

安裝docker時能夠不用關閉,當es進行集羣部署時,必須關閉,不然集羣沒法生效git

4、安裝docker

scp docker.zip root@ip:~ #沒網手動copy
unzip docker.zip
cd docker
sh setup_without_container-selinux-2.9 #虛擬機/實體機
# 服務器,直接聯網安裝,不贅述

setup_without_container-selinux-2.9.sh 腳本內容以下:github

#auto-mount
yum clean all
yum makecache
yum remove -y docker-engine
mkdir -p /data/tmp
chmod -R 777 /data/tmp
mkdir -p /data/sys/var/docker
chmod -R 777 /data/sys/var/docker
ln -s /data/sys/var/docker /var/lib/docker
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo "vm.max_map_count=655360" >> /etc/sysctl.conf && sysctl -p
yum install -y net-tools
useradd -d /data/duser -m duser
echo "duser:5VSDHai4" |chpasswd
echo "duser    ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
rpm -ivh container-selinux-2.9-4.el7.noarch.rpm
yum install -y ./docker-ce-17.09.0.ce-1.el7.centos.x86_64.rpm
usermod -aG docker duser
rm -fr ./*
cd ../
rm -fr docker_install docker_install.tar.gz
注意:

sh腳本能夠根據具體狀況進行修改docker

當出現沒法安裝成功,且提示rpm安裝問題時,在rpm安裝命令以後,加 —nodeps —force ,意思爲不考慮分析包之間的依賴關係,便可安裝成功數據庫

5、開啓docker服務

systemctl start docker
systemctl enable docker
systemctl status docker
docker version #查詢是否開啓docker

6、安裝java(部署es 的依賴)

java -version #查看是否有java,若是有,忽略之後步驟
本地安裝java

 http://www.oracle.com/technet...json

7、讀取鏡像(根據實際狀況)

docker load -i image.tar #若是是zip的鏡像,則先unziip成tar文件
docker images
# 啓動容器,而且將本地的文件目錄掛載至容器data目錄下
docker run -itd -p 8888:8888 -v /data/origin_file:/data/duser/patent_similaruty/data/origin_file --name patent_preprocess patent_preprocess:1.1 bash
#進入容器
docker exec -it patent_preprocess bash
#中止容器
docker stop patent_preprocess

8、若是須要docker-compose啓動

安裝並使用docker-compose

方法一:

使用curl命令下載

curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

方法二:

使用pip命令下載

yum -y install epel-release
yum -y install python-pip
pip install docker-compose

你學廢了嗎?

相關文章
相關標籤/搜索