做編程的網(wǎng)站有哪些搜索引擎推廣一般包括哪些
引入
??Elasticsearch(簡稱ES)是一個基于Apache Lucene?的開源搜索引擎,無論在開源還是專有領(lǐng)域,Lucene 可以被認為是迄今為止最先進、性能最好的、功能最全的搜索引擎庫。幾天我們就來體驗一下如何在海量數(shù)據(jù)中快速進行搜索。
文章目錄
- 引入
- 一、環(huán)境搭建
- 1.1、安裝JDK
- 1.2、安裝ElasticSearch
- 1.3、設(shè)置data的目錄
- 1.4、設(shè)置log的目錄
- 1.5、修改配置文件elasticsearch.yml
- 1.6、啟動elasticsearch
- 二、創(chuàng)建數(shù)據(jù)索引
- 2.1創(chuàng)建 `my_index`的索引
- 三. 進行數(shù)據(jù)導(dǎo)入
- 四、 進行數(shù)據(jù)搜索
- 總結(jié)
一、環(huán)境搭建
首先,在使用 Elasticsearch 之前,我們需要先安裝好服務(wù),操作也很簡單。
本次我們選擇我們采用CentOS7
來部署 ElasticSearch 服務(wù)。
登錄https://www.elastic.co/cn/downloads/elasticsearch
,選擇相應(yīng)的系統(tǒng)環(huán)境下載軟件包,這里我用的操作系統(tǒng)是CentOS
,所以選擇Linux
環(huán)境。
1.1、安裝JDK
Elasticsearch 是用 Java 語言開發(fā)的,所以在安裝之前,需要先安裝一下JDK
yum -y install java-1.8.0-openjdk
查看java安裝情況
java -version
1.2、安裝ElasticSearch
進入到對應(yīng)上傳的文件夾,安裝ElasticSearch
rpm -ivh elasticsearch-6.1.0.rpm
查找安裝路徑
rpm -ql elasticsearch
一般是裝在/usr/share/elasticsearch/
下。
1.3、設(shè)置data的目錄
創(chuàng)建/data/es-data
目錄,用于elasticsearch數(shù)據(jù)的存放
mkdir -p /data/es-data
修改該目錄的擁有者為elasticsearch
chown -R elasticsearch:elasticsearch /data/es-data
1.4、設(shè)置log的目錄
mkdir -p /log/es-log
修改該目錄的擁有者為elasticsearch
chown -R elasticsearch:elasticsearch /log/es-log
1.5、修改配置文件elasticsearch.yml
vim /etc/elasticsearch/elasticsearch.yml
修改如下內(nèi)容:
#設(shè)置節(jié)點名稱
cluster.name: my-es#設(shè)置data存放的路徑為/data/es-data
path.data: /data/es-data#設(shè)置logs日志的路徑為/log/es-log
path.logs: /log/es-log#設(shè)置內(nèi)存不使用交換分區(qū),配置了bootstrap.memory_lock為true時反而會引發(fā)9200不會被監(jiān)聽,原因不明
bootstrap.memory_lock: false#設(shè)置允許所有ip可以連接該elasticsearch
network.host: 0.0.0.0#開啟監(jiān)聽的端口為9200
http.port: 9200#增加新的參數(shù),為了讓elasticsearch-head插件可以訪問es (5.x版本,如果沒有可以自己手動加)
http.cors.enabled: true
http.cors.allow-origin: "*"
1.6、啟動elasticsearch
啟動
systemctl start elasticsearch
查看狀態(tài)
systemctl status elasticsearch
設(shè)置開機啟動
systemctl enable elasticsearch
啟動成功之后,測試服務(wù)是否開啟
curl -X GET http://localhost:9200
同時也可以遠程測試一下,如果網(wǎng)絡(luò)被拒絕,檢查防火墻是否開啟
#查詢防火墻狀態(tài)
firewall-cmd --state
如果狀態(tài)是active
表示已經(jīng)開啟,可以將其關(guān)閉
#關(guān)閉防火墻
systemctl stop firewalld.service
如果不想開機啟動,可以輸入如下命令
#禁止firewall開機啟動
systemctl disable firewalld.service
二、創(chuàng)建數(shù)據(jù)索引
在Elasticsearch中,數(shù)據(jù)是以JSON格式存儲的。首先,我們需要創(chuàng)建一個索引,索引相當(dāng)于一個數(shù)據(jù)集合,它可以包含一個或多個類型(type)。
2.1創(chuàng)建 my_index
的索引
PUT /my_index
{"settings": {"number_of_shards": 1,"number_of_replicas": 0},"mappings": {"properties": {"title": { "type": "text" },"content": { "type": "text" }}}
}
在上面的例子中,我們創(chuàng)建了一個名為my_index
的索引,并設(shè)置了分片數(shù)為1,副本數(shù)為0。同時,我們定義了兩個字段title
和content
,它們的類型都是文本。
三. 進行數(shù)據(jù)導(dǎo)入
接下來,我們需要將數(shù)據(jù)導(dǎo)入到Elasticsearch中??梢允褂?code>POST請求和bulk
API來實現(xiàn)。
POST /my_index/_bulk
{ "index": { "_id": 1 } }
{ "title": "Elasticsearch教程", "content": "這是一篇關(guān)于Elasticsearch的教程。" }
{ "index": { "_id": 2 } }
{ "title": "Elasticsearch實戰(zhàn)", "content": "這是一篇關(guān)于Elasticsearch實戰(zhàn)的教程。" }
四、 進行數(shù)據(jù)搜索
現(xiàn)在,我們的數(shù)據(jù)已經(jīng)導(dǎo)入到Elasticsearch中,可以使用GET
請求來搜索數(shù)據(jù)。
GET /my_index/_search
{"query": {"match": {"title": "Elasticsearch"}}
}
上面的例子中,我們使用了一個簡單的匹配查詢來搜索標(biāo)題中包含"Elasticsearch"的文檔。
總結(jié)
在本教程中,我們學(xué)習(xí)了如何在Elasticsearch中創(chuàng)建索引、導(dǎo)入數(shù)據(jù)、進行數(shù)據(jù)搜索以及一些性能優(yōu)化建議。希望這些內(nèi)容能夠幫助您在海量級數(shù)據(jù)中實現(xiàn)快速搜索。