es(一)

1.什么是全文檢索和Lucene

基于java環(huán)境,基于Lucene之上包裝一層外殼 Lucene是一個(gè)java的搜索引擎庫(kù),操作非常繁瑣

https://blog.csdn.net/sinat_35188997/article/details/83502920

2.Elasticsearch應(yīng)用場(chǎng)景

1.搜索:電商灯蝴,百科

2.高亮顯示:githup

3.分析和數(shù)據(jù)挖掘

3.Elasticsearch特點(diǎn)

1.高性能,分布式

2.對(duì)運(yùn)維友好乔夯,不需要會(huì)java語(yǔ)言,開(kāi)箱即用

3.功能豐富

mysql和ES對(duì)比 庫(kù) 索引 index 表 類(lèi)型 type 字段 項(xiàng) filter 行 文檔 doc

4.Elasticsearch在電商搜索的實(shí)現(xiàn)

mysql: skuid name 1 狗糧100kg 2 貓糧50kg 3 貓罐頭200g

ES: 聚合運(yùn)算之后得到SKUID: 1 2

拿到ID之后,mysql就只需要簡(jiǎn)單地where查詢(xún)即可 mysql: select xx from xxx where skuid 1

通俗的說(shuō)就是es會(huì)在運(yùn)算后得到一個(gè)值與mysql里面相對(duì)應(yīng)砰诵,減少mysql的壓力。

5.ES安裝啟動(dòng)

1.下載軟件
mkdir /data/soft
[root@db-01 /data/soft]# ll -h
total 268M
-rw-r--r-- 1 root root 109M Feb 25  2019 elasticsearch-6.6.0.rpm
-rw-r--r-- 1 root root 159M Sep  2 16:35 jdk-8u102-linux-x64.rpm

2.安裝jdk
rpm -ivh jdk-8u102-linux-x64.rpm 
[root@db-01 /data/soft]# java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)

3.安裝ES
rpm -ivh elasticsearch-6.6.0.rpm

4.檢查
netstat -lntup|grep 9200
systemctl status elasticsearch.service

[root@db-01 ~]# curl 127.0.0.1:9200
{
  "name" : "Zr3WNj9",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "HR0ERydmTV2OH55subh7HQ",
  "version" : {
    "number" : "6.6.0",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "a9861f4",
    "build_date" : "2019-01-24T11:27:09.439740Z",
    "build_snapshot" : false,
    "lucene_version" : "7.6.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

6.ES配置

1.查看ES有哪些配置 
[root@db-01 ~]# rpm -qc elasticsearch
/etc/elasticsearch/elasticsearch.yml    #ES主配置文件    
/etc/elasticsearch/jvm.options          #jvm配置
/etc/init.d/elasticsearch               #init的啟動(dòng)文件
/etc/sysconfig/elasticsearch            #ES環(huán)境變量的相關(guān)配置
/usr/lib/sysctl.d/elasticsearch.conf    #ES環(huán)境變量的相關(guān)配置
/usr/lib/systemd/system/elasticsearch.service   #systemcd啟動(dòng)文件

2.自定義配置文件
[root@db-01 ~]# grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml 
node.name: node-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 10.0.0.51,127.0.0.1
http.port: 9200

3.重啟服務(wù)后發(fā)現(xiàn)報(bào)錯(cuò)
systemctl restart elasticsearch 

4.解決內(nèi)存鎖定失敗:
查看日志發(fā)現(xiàn)提示內(nèi)存鎖定失敗
tail -f /var/log/elasticsearch/elasticsearch.log 
[2019-09-06T10:12:35,988][ERROR][o.e.b.Bootstrap          ] [node-1] node validation exception
[1] bootstrap checks failed
[1]: memory locking requested for elasticsearch process but memory is not locked

解決方案:
systemctl edit elasticsearch
[Service]
LimitMEMLOCK=infinity
systemctl daemon-reload
systemctl restart elasticsearch

7.ES交互方式

三種交互方式
curl命令:
? 最繁瑣
? 最復(fù)雜
? 最容易出錯(cuò)
? 不需要安裝任何軟件曙求,只需要有curl命令

es-head插件
? 查看數(shù)據(jù)方便
? 操作相對(duì)容易
? 需要node環(huán)境

kibana
? 查看數(shù)據(jù)以及報(bào)表格式豐富
? 操作很簡(jiǎn)單
? 需要java環(huán)境和安裝配置kibana

8.es-head插件的安裝

注意:需要修改配置文件添加允許跨域參數(shù)

修改ES配置文件支持跨域 http.cors.enabled: true http.cors.allow-origin: "*"

es-head 三種方式: 1.npm安裝方式

  • 需要nodejs環(huán)境

  • 需要連接國(guó)外源

2.docker安裝

3.google瀏覽器插件

  • 修改文件名為zip后綴

  • 解壓目錄

  • 拓展程序-開(kāi)發(fā)者模式-打開(kāi)已解壓的目錄

  • 連接地址修改為ES的IP地址

4.具體操作命令

Head插件在5.0以后安裝方式發(fā)生了改變与帆,需要nodejs環(huán)境支持卖词,或者直接使用別人封裝好的docker鏡像 插件官方地址 https://github.com/mobz/elasticsearch-head

使用docker部署elasticsearch-head
docker pull alivv/elasticsearch-head
docker run --name es-head -p 9100:9100 -dit elivv/elasticsearch-head

使用nodejs編譯安裝elasticsearch-head
yum install nodejs npm openssl screen -y
node -v
npm  -v
npm install -g cnpm --registry=https://registry.npm.taobao.org
cd /opt/
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head/
cnpm install
screen -S es-head
cnpm run start
Ctrl+A+D

9.kibana與ES交互

1.安裝kibana
rpm -ivh kibana-6.6.0-x86_64.rpm

2.配置kibana
[root@db-01 /data/soft]# grep "^[a-Z]" /etc/kibana/kibana.yml 
server.port: 5601
server.host: "10.0.0.51"
elasticsearch.hosts: ["http://localhost:9200"]
kibana.index: ".kibana"

3.啟動(dòng)kibana
systemctl start kibana

4.操作ES

Dev Tools

10.插入數(shù)據(jù)

1.使用自定義的ID 
PUT oldzhang/info/1
{
  "name": "zhang",
  "age": "29"
}

2.使用隨機(jī)ID
POST oldzhang/info/
{
  "name": "zhang",
  "age": "29",
  "pet": "xiaoqi"
}

3.和mysql對(duì)應(yīng)關(guān)系建議單獨(dú)列一個(gè)字段
POST oldzhang/info/
{
  "uid": "1",
  "name": "ya",
  "age": "29"
}


curl -XPUT '10.0.0.51:9200/oldzhang/info/1?pretty' -H 'Content-Type: application/json' -d'
{
  "uid": "1",
  "name": "ya",
  "age": "29"
}'

curl -XPUT '10.0.0.51:9200/oldzhang/info/2?pretty' -H 'Content-Type: application/json' -d'
{
  "uid": "1",
  "name": "zhang",
  "age": "29"
}'
#創(chuàng)建測(cè)試語(yǔ)句
POST oldzhang/info/
{
  "name": "zhang",
  "age": "29",
  "pet": "xiaoqi",
  "job": "it"
}

POST oldzhang/info/
{
  "name": "xiao1",
  "age": "30",
  "pet": "xiaoqi",
  "job": "it"
}

POST oldzhang/info/
{
  "name": "xiao2",
  "age": "26",
  "pet": "xiaoqi",
  "job": "it"
}

POST oldzhang/info/
{
  "name": "xiao4",
  "age": "35",
  "pet": "xiaoqi",
  "job": "it"
}

POST oldzhang/info/
{
  "name": "ya",
  "age": "28",
  "pet": "xiaomin",
  "job": "it"
}

POST oldzhang/info/
{
  "name": "xiaomin",
  "age": "26",
  "pet": "xiaowang",
  "job": "SM"
  
}

POST oldzhang/info/
{
  "name": "hemengfei",
  "age": "38",
  "pet": "xiaohe",
  "job": "3P"
}

POST oldzhang/info/
{
  "name": "xiaoyu",
  "age": "28",
  "pet": "bijiben",
  "job": "fly"
}

#簡(jiǎn)單查詢(xún)
GET oldzhang/_search/

#條件查詢(xún)
GET oldzhang/_search
{
  "query": {
    "term": {
      "name": {
        "value": "xiaomin"
      }
    }
  }
}

GET oldzhang/_search
{
  "query": {
    "term": {
      "job": {
        "value": "it"
      }
    }
  }
}

#多條件查詢(xún)
GET /oldzhang/_search
{
    "query" : {
      "bool": {
        "must": [
          {"match": {"pet": "xiaoqi"}},
          {"match": {"name": "zhang"}}
        ],
        "filter": {
          "range": {
            "age": {
              "gte": 27,
              "lte": 30
            }
          }
          }
        }
      }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末巩那,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子此蜈,更是在濱河造成了極大的恐慌即横,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件舶替,死亡現(xiàn)場(chǎng)離奇詭異令境,居然都是意外死亡杠园,警方通過(guò)查閱死者的電腦和手機(jī)顾瞪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)抛蚁,“玉大人陈醒,你說(shuō)我怎么就攤上這事∏扑Γ” “怎么了钉跷?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)肚逸。 經(jīng)常有香客問(wèn)我爷辙,道長(zhǎng)彬坏,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任膝晾,我火速辦了婚禮栓始,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘血当。我一直安慰自己幻赚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布臊旭。 她就那樣靜靜地躺著落恼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪离熏。 梳的紋絲不亂的頭發(fā)上佳谦,一...
    開(kāi)封第一講書(shū)人閱讀 49,821評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音撤奸,去河邊找鬼吠昭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛胧瓜,可吹牛的內(nèi)容都是我干的矢棚。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼府喳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蒲肋!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起钝满,我...
    開(kāi)封第一講書(shū)人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤兜粘,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后弯蚜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體孔轴,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年碎捺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了路鹰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡收厨,死狀恐怖晋柱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情诵叁,我是刑警寧澤雁竞,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站拧额,受9級(jí)特大地震影響碑诉,放射性物質(zhì)發(fā)生泄漏彪腔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一进栽、第九天 我趴在偏房一處隱蔽的房頂上張望漫仆。 院中可真熱鬧,春花似錦泪幌、人聲如沸盲厌。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)吗浩。三九已至,卻和暖如春没隘,著一層夾襖步出監(jiān)牢的瞬間懂扼,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工右蒲, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留阀湿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓瑰妄,卻偏偏與公主長(zhǎng)得像陷嘴,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子间坐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容