久久国产精品二区_av av在线_国产乱国产乱老熟300部视频_一本一道精品欧美中文字幕_蜜桃av免费看_免费又黄又爽又猛大片午夜_人妻在线日韩免费视频_男女视频免费看_精品久久久久久中文字幕2017 _亚洲精品一区二区三区不卡

【上海網絡優化公司】使用Docker和Elasticsearch搭建全文本搜索引擎應用

發布時間:2019-09-27 14:40:39訪問人數:作者:

喜歡記得轉發關注喲


給應用添加快速、靈活的全文本搜索對誰都不是一件容易的事情。許多主流數據庫,如PostgreSQL和MongoDB,受限于查詢和索引結構,只提供基礎文本搜索能力。為了提供高效全文本搜索一般都需要一個獨立的數據庫。Elasticsearch正是這樣一個能夠提供靈活性和快速全文本搜索能力的開源數據庫。


本文采用Docker來設置依賴環境。Docker是目前較常見的容器化引擎,Uber、Spotify、ADP和Paypal都是用這個技術,它的優勢在于與操作系統無關,可以運行在Windows、macOS和Linux之上——寫操作指南很容易。如果從來沒有用過Docker也沒問題,本文會詳細提供配置文件。


本文也分別采用Node.js采(用Koa框架)和Vue.js創建搜索API和前端Web應用。


1. 什么是Elasticsearch


現代應用中全文本檢索是高請求負載的應用。搜索功能也是比較困難完成的功能(許多大眾網站都有subpar功能,但不是返回很慢就是返回結果不準確),大部分原因是因為底層數據庫:許多標準關系型數據庫只能提供基本字符串匹配功能,而對CONTAINS或者LIKE SQL查詢只能提供有限支持。


而本文提供的搜索應用能夠提供:


快速:查詢結果應該實時返回,提高用戶體驗。


靈活:根據不同數據和使用場景,可以調整搜索過程。


較佳建議:對于輸入錯誤,返回較可能的結果。


全文本:除了搜索關鍵詞和標簽之外,希望能夠搜索到所有匹配文本。


實現以上要求的搜索應用,較好采用一個為全文本檢索優化的數據庫,這也是本文采用Elasticsearch的原因。Elasticsearch是一個用Java開發的,開源的內存數據庫,較開始是包含在Apache Lucene庫中。以下是一些官方給出的Elasticsearch使用場景:


Wikipedia使用Elasticsearch提供全文檢索,提供高亮顯示、search-as-you-type和did-you-mean建議等功能。


Guardian使用Elasticsearch將訪問者社交數據整合反饋給作者。


Stack Overflow將位置信息和more-like-this功能與全文本檢索整合提供相關問題和答案。


GitHub使用Elasticsearch在一千三百億行代碼中進行搜索。


Elasticsearch有什么獨特之處


本質上,Elasticsearch通過使用反向索引提供快速和靈活的全文本搜索。


“索引”是一種在數據庫中提供快速查詢和返回的數據結構。數據庫一般將數據域和相應表位置生成索引信息。將索引信息存放在一個可搜索的數據結構中(一般是B-Tree),數據庫可以為優化數據請求獲得線性搜索響應(例如“Find the row with ID=5”)。


可以把數據庫索引看做學校圖書館卡片分類系統,只要知道書名和作者,就可以準確告訴查找內容的入口。數據庫表一般都有多個索引表,可以加速查詢(例如,對name列的索引可以極大加速對特定name的查詢)。


而反向索引工作原理與此完全不同。每行(或者每個文檔)的內容被分拆,每個入口(本案例中是每個單詞)反向指向包含它的文檔。


反向索引數據結構對查詢“football”位于哪個文檔這種查詢非常迅速。Elasticsearch使用內存優化反向索引,可以實現強大和客制化全文本檢索任務。


2. 項目安裝


2.0 Docker


本文使用Docker作為項目開發環境。Docker是一個容器化引擎,應用可以運行在隔離環境中,不依賴于本地操作系統和開發環境。因為可以帶來巨大靈活性和客制化,許多互聯網公司應用都已經運行在容器中。


對于作者來說,Docker可以提供平臺一致性安裝環境(可以運行在Windows、macOS和Linux系統)。一般Node.js、Elasticsearch和Nginx都需要不同安裝步驟,如果運行在Docker環境中只需要定義好不同配置文件,就可以運行在任何Docker環境。另外,由于應用各自運行在隔離容器中,與本地宿主機關系很小,因此類似于“但是我這可以運行啊”這種排錯問題就很少會出現。


2.1 安裝Docker和Docker-Compose


本項目只需要Docker和Docker-Compose環境。后者是Docker官方工具,在單一應用棧中編排定義多個容器配置。


安裝Docker——


安裝Docker Compose——


2.2 設置項目安裝目錄


創建一個項目根目錄(例如guttenberg_search),在其下定義兩個子目錄:


public——為前端 Vue.js webapp存放數據。


server——服務器端Node.js 源文件。


2.3 添加Docker-Compose配置文件


下一步,創建docker-compose.yml文件,定義應用棧中每個容器的配置:


gs-api——Node.js 容器后端應用邏輯.


gs-frontend——為前端webapp提供服務的Nginx容器


gs-search——存儲搜索數據的Elasticsearch容器


version: '3'services:api: # Node.js Appcontainer_name: gs-apibuild: .ports: - "3000:3000" # Expose API port - "9229:9229" # Expose Node process debug port (disable in productionenvironment: # Set ENV vars - NODE_ENV=local - ES_HOST=elasticsearch - PORT=3000volumes: # Attach local book data directory - .books:usrsrcappbooksfrontend: # Nginx Server For Frontend Appcontainer_name: gs-frontendimage: nginxvolumes: # Serve local "public" dir - .public:usrsharenginxports: - "8080:80" # Forward site to localhost:8080elasticsearch: # Elasticsearch Instancecontainer_name: gs-searchimage: docker.elastic.coelasticsearchelasticsearch:6.1.1volumes: # Persist ES data in seperate "esdata" volume - esdata:usrshareelasticsearchdataenvironment: - bootstrap.memory_lock=true - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - discovery.type=single-nodeports: # Expose Elasticsearch ports - "9300:9300" - "9200:9200"volumes: # Define seperate volume for Elasticsearch dataesdata:<pre>


此文件定義應用棧,而不需要在本地宿主機安裝Elasticsearch、Node.js、或者Nginx。每個容器都對宿主機開放相應端口,以便從宿主機訪問和排錯Node API,Elasticsearch實例和前端應用。


2.4 添加Dockerfile


本文使用官方的Nginx和Elasticsearch鏡像,但是需要重新為Node.js創建自己的鏡像。


在應用根目錄定義一個簡單的Dockerfile配置文件。


# Use Node v8.9.0 LTSFROM node:carbonSetup app working directoryWORKDIR usrsrcappCopy package.json and package-lock.jsonCOPY package*.json .Install app dependenciesRUN npm installCopy sourcecodeCOPY . .Start appCMD [ "npm", "start" ]<pre>


此Docker配置文件中將應用源碼拷貝進來,安裝了NPM依賴包,形成了自己的鏡像。同樣需要添加一個.dockerignore文件,避免不需要的文件被拷入。


node_modulesnpm-debug.logbookspublic<pre>注意:不需要將node_modules拷入,因為我們后續要用npm install來安裝這些進程。如果拷貝node_modules到容器中容易引起兼容性問題。例如在macOS上安裝bcrypt包,如果將此module拷入Ubuntu容器就會引起操作系統不匹配問題。


2.5 添加基礎文件


測試配置文件前,還需要往應用目錄拷入一下占位文件。在publicindex中加入如下基礎配置信息:


><body>Hello World From The Frontend Container<body><><pre>


下一步,在serverapp.js中加入Node.js的應用文件。


{if (err console.error(errconsole.log(`App Listening on Port ${port}`}<pre>


較后,加入package.json節點配置文件:


{"name": "guttenberg-search","version": "0.0.1","description": "Source code for Elasticsearch tutorial using 100 classic open source books.","scripts": {"start": "node --inspect=0.0.0.0:9229 serverapp.js"},"repository": {"type": "git","url": "git+ "","license": "MIT","bugs": {"url": " " {"elasticsearch": "13.3.1","joi": "13.0.1","koa": "2.4.1","koa-joi-validate": "0.5.1","koa-router": "7.2.1"}}<pre>


此文件定義應用開始命令和Node.js依賴包。


注意:不需要特意運行npm install,容器創建時候會自動安裝依賴包。


2.6 開始測試


都準備好了,接下來可以測試了。從項目根目錄開始,運行docker-compose,會自動創建Node.js容器應用。


運行docker-compose up啟動應用:


注意:這一步可能會運行時間比較長,因為Docker可能需要下載基礎鏡像。以后執行速度會很快,因為本地已經有了基礎鏡像。


訪問localhost:8080,應該看到如下圖輸出“hello world”。


訪問localhost:3000驗證服務器端返回“hello world”信息。


較后,訪問localhost:9200確認Elasticsearch是否運行,如果正常,應該返回如下輸出:


{"name" : "SLTcfpI","cluster_name" : "docker-cluster","cluster_uuid" : "iId8e0ZeS_mgh9ALlWQ7-w","version" : {"number" : "6.1.1","build_hash" : "bd92e7f","build_date" : "2019-12-17T20:23:25.338Z","build_snapshot" : false,"lucene_version" : "7.1.0","minimum_wire_compatibility_version" : "5.6.0","minimum_index_compatibility_version" : "5.0.0"},"tagline" : "You Know, for Search"}<pre>


如果所有URL輸出都正常,恭喜,整個應用框架可以正常工作,下面開始進入真正有趣的部分了。


贊+1

華夕網絡 版權所有 Copyright ? 2012-2018 m.4006661307.com All Rights Reserved .   備案號:滬ICP備15005556號-3    網站地圖    代理商查詢

  • QQ
  • 電話
  • 首頁
  • 留言
  • 返回頂部
  • zxly.png

    日韩高清精品免费观看| 一区二区xxx| 少妇荡乳情欲办公室456视频| 欧美日韩综合一区二区| 人妻无码一区二区三区免费 | 国产污片在线观看| 国产又大又黑又粗免费视频| 国产主播中文字幕| 久热在线视频观看| 免费在线看黄网址| 日韩精品久久久久久久酒店 | 激情图片中文字幕| 久久久久99人妻一区二区三区| 久久久久亚洲av无码网站| 免费看av毛片| 日韩精品一区二区亚洲av观看| 色香蕉在线视频| 一区二区精品免费| 亚洲麻豆一区二区三区| 91杏吧porn蝌蚪| 99国产精品免费视频| 国产www免费观看| 国产一区二区女内射| 国产欧美久久久精品免费| 久久久久99人妻一区二区三区 | 欧美丰满美乳xxⅹ高潮www| 少妇高潮久久久| 午夜av免费看| 亚洲精品无码久久久久久久| av不卡中文字幕| 国产又粗又猛又爽又黄| 久久精品国产亚洲av麻豆色欲 | 日本黄视频在线观看| 天天爱天天操天天干| 人妻一区二区三区免费| 天天综合在线视频| 亚洲精品国产手机| www.夜夜爽| 国产亚洲精品熟女国产成人| 久久久全国免费视频| 日韩精品一区二区三区国语自制 | 欧美极品jizzhd欧美18| 性欧美丰满熟妇xxxx性久久久| 最近日韩免费视频| 国产精品系列视频| 337p粉嫩色噜噜噜大肥臀| 中文字幕在线观看视频一区| 成人免费毛片糖心| 久久久久亚洲天堂| 一区二区三区视频免费看| 中文字幕在线观看1| 国产极品国产极品| 欧美黄色免费在线观看| 五月天综合视频| 99re在线视频精品| 蜜桃色一区二区三区| 午夜成人鲁丝片午夜精品 | 精品99在线观看| 日本中文字幕在线不卡| 最新天堂中文在线| 国产精品久久久久久久久久久久久久久久久 | 精品人妻一区二区三区视频 | 丰满少妇在线观看资源站| 欧洲美一区二区三区亚洲| 亚洲在线精品视频| 在线观看中文av| 中文字幕国产免费| 中文字幕+乱码+中文乱码91| 日本亚洲一区二区三区| 国产又黄又粗又猛又爽| 91激情视频在线观看| 亚洲精品一区二区三区区别| 麻豆av免费观看| 欧美特黄一级片| 超碰人人干人人| 精品人妻伦一二三区久久| 在线观看av网页| 久久精品国产av一区二区三区| 亚洲精品一区二区口爆| 亚洲AV成人精品| 国产一级免费av| 色婷婷粉嫩av| 国产精品午夜福利| 色噜噜狠狠永久免费| 99国产精品99| 日本在线观看视频网站| 91精品国自产在线| 日产欧产va高清| 夜夜爽8888| 久久亚洲精品国产| 亚洲精品国产精品国自产网站按摩| 国产欧美视频一区| 亚洲国产精品18久久久久久| 欧美极品aaaaabbbbb| 亚洲综合20p| 天天干中文字幕| 黄色av一区二区三区| www.99视频| 日本免费精品视频| 天天色天天操天天射| 成人在线一级片| 色av性av丰满av| 国产精品黄色网| 手机看片国产精品| 成年人网站免费看| 日本一级免费视频| 国产sm主人调教女m视频| 色在线观看视频| 国产精品久久欧美久久一区| 色哟哟无码精品一区二区三区| 一本一道精品欧美中文字幕| 玖玖爱这里只有精品| 91激情视频在线观看| 日韩乱码人妻无码中文字幕久久| 国产精品111| 中文字幕在线观看你懂的| 欧美日韩激情在线观看| av在线天堂网| 亚洲AV午夜精品| 麻豆av免费看| 99精品视频免费版的特色功能| 特黄视频免费看| 久久久精品91| 国产99在线 | 亚洲| 亚洲AV无码精品自拍| 久久国产精品二区| 成人小视频免费看| 亚洲精品天堂网| 少妇激情一区二区三区视频| 黄色国产在线观看| 99er热精品视频| 中文字幕免费视频| 日韩在线 中文字幕| 色一情一区二区| 少妇精品视频一区二区| 夜夜躁日日躁狠狠久久av| 色婷婷av一区二区三区之e本道| 国产一区二区三区在线视频观看 | 午夜精品一区二区三级视频| 老牛影视av牛牛影视av| 国产又黄又猛又粗又爽的视频| 99在线观看免费| 亚洲一区二区三区观看| 在线免费观看av网| 五月婷婷丁香在线| 日批视频在线播放| 日本www.色| 免费人成视频在线播放| 九九热免费精品视频| 国产污污视频在线观看| 国产精品久久久久久久久毛片| www.看毛片| 91麻豆免费视频网站| 亚洲调教欧美在线| 亚洲国产成人精品一区二区三区| 五月婷婷六月合| 天堂在线资源视频| 日韩影视一区二区三区| 人妻少妇一区二区三区| 精品人妻无码一区二区色欲产成人 | 亚洲天堂黄色片| 青娱乐国产盛宴| 刘亦菲久久免费一区二区| 九九热99视频| 九九热在线视频播放| 黄色国产在线观看| 国产精品第一页在线观看| 亚洲一区二区三区网站| 性欧美8khd高清极品| 婷婷激情四射网| 五月天婷婷丁香| 性色av蜜臀av色欲av| 亚洲AV无码成人精品区东京热| 午夜精品一区二区三| 亚洲 精品 综合 精品 自拍| 小毛片在线观看| 一区二区视频网| 一起操在线播放| 中文字幕有码无码人妻av蜜桃| 中文字幕码精品视频网站| 中文字幕人妻一区二区三区| 中文字幕无码日韩专区免费| 中文字幕一二三四区| 亚洲精品在线观看av| 91av在线免费视频| 成人久久久精品国产乱码一区二区| www.国产三级| 国产精品爽爽久久| 精品国产av一区二区| 久久一级黄色片| 人人爽人人爽av| 午夜精品久久久久久久第一页按摩| 亚洲va天堂va欧美ⅴa在线| 在线观看国产亚洲| 亚洲天堂网av在线| 成人午夜福利一区二区| 国产视频一二三四区| 精品亚洲视频在线| 欧美黄色一级大片| 午夜福利理论片在线观看| 中文字幕一区二区三区精品| 91精品国产自产| 国产精品久久久久久久久久久久久久久久 | 国产亚洲精品成人| 久久国产精品影院| 日本久久久久久久久久久久| 午夜精品久久久久久久蜜桃| 亚洲精品在线观看av| 99热手机在线| 国产亚洲精品av| 浓精h攵女乱爱av| 手机看片国产1024| 中文字幕+乱码+中文乱码www| 亚洲日本中文字幕在线| 国产67194| 久久久久久国产精品免费播放| 日韩成人av一区二区| 中文字幕久久久久| jizzjizzjizz国产| 精品人妻人人做人人爽夜夜爽| 日本aⅴ在线观看| 中文字幕55页| 超碰在线人人爱| 久久精品一区二区三| 少妇又紧又色又爽又刺激视频| 中文字幕在线2019| 国产大尺度视频| 蜜桃传媒一区二区亚洲| 午夜av免费观看| jizz中文字幕| 久久久国产成人| 性欧美18一19性猛交| av2014天堂网| 久久免费视频99| 伊人网在线视频观看| mm131亚洲精品| 久久久夜色精品| 亚洲成a人片在线www| 朝桐光av在线一区二区三区| 久久久久久久久久久久久久久国产 | 中文字幕+乱码+中文| 顶臀精品视频www| 免费视频91蜜桃| 中文字幕久久av| 国产精品sm调教免费专区| 男人女人拔萝卜视频| 中文字幕+乱码+中文| 国产精品探花视频| 色婷婷一区二区三区在线观看| 一级黄色大片免费| 久久久男人的天堂| 真实乱视频国产免费观看| 国产极品久久久| 深夜福利网站在线观看| chinese国产精品| 蜜臀av在线观看| 亚洲另类在线观看| 久久精品老司机| 中文天堂在线播放| 国产女人高潮时对白| 呻吟揉丰满对白91乃国产区| av在线亚洲天堂| 侵犯稚嫩小箩莉h文系列小说 | 免费在线观看你懂的| 中文字幕在线看人| 国产又粗又猛又爽又黄91| 无码免费一区二区三区| 干b视频在线观看| 日日夜夜狠狠操| 成人无码一区二区三区| 日韩精品无码一区二区三区久久久| 91人人澡人人爽人人精品| 久热精品在线观看视频| 亚洲精品无码久久久久| 久久美女免费视频| 亚洲综合色在线观看| 久久免费视频6| 亚洲欧美va天堂人熟伦| 久久午夜夜伦鲁鲁片| 亚洲男人天堂2021| 男女性杂交内射妇女bbwxz| 一级片视频免费看| 欧亚乱熟女一区二区在线| av免费一区二区| 日韩一级在线播放| 国产福利资源在线| 亚洲成人精品女人久久久| 国产又黄又爽又色| 亚洲激情在线观看视频| 久久久精品视频国产| 一级久久久久久| 日本不卡一区在线| 国产精品九九视频| 午夜激情福利电影| 国产一区二区三区视频免费观看| 在线观看成人动漫| 久久人妻一区二区| 一本在线免费视频| 手机av在线免费| 国产在线不卡av| 亚洲综合精品视频| 日本精品一二区| 国产美女www| 亚洲精品国产一区黑色丝袜| 欧美亚洲精品在线观看| 动漫精品一区二区三区| 在线免费播放av| 欧美三级网站在线观看| 岛国av免费观看| 中文字幕+乱码+中文乱码www| 久久日免费视频| www.色播.com| 中文字幕一区二区三区人妻| 欧美三级韩国三级日本三斤在线观看| 丰满人妻老熟妇伦人精品| 一区二区三区免费在线视频 | 性色av蜜臀av| 免费黄在线观看| 国产成人自拍一区| 中文亚洲av片在线观看 | www.av日韩| 这里只有精品9| 日本精品久久久久中文| 好吊日在线视频| www.久久综合| 亚洲国产成人一区二区| 手机看片一区二区| 老司机久久精品| 国产精品主播一区二区| 亚洲欧美日韩精品永久在线| 天天干天天爽天天操| 久久精品免费在线| 国产精品探花视频| 91网站免费视频| 中文字幕激情小说| 色欲无码人妻久久精品| 久久久久久久久久久影视| 国产精品女同一区二区| 26uuu国产| 中文字幕欧美人妻精品| 天天操天天舔天天射| 欧美三根一起进三p| 极品白嫩丰满美女无套| 高清一区在线观看| 91亚洲国产成人久久精品麻豆| 伊人网av在线| 四虎成人在线播放| 欧美日韩偷拍视频| 久久精品亚洲无码| 国产一级黄色录像| 国产精品23p| www.五月天色| 91人妻一区二区三区| 亚洲精品一区二区三区四区| 五月天精品在线| 少妇激情一区二区三区视频| 欧美男人天堂网| 久久只有这里有精品| 精品国产欧美日韩不卡在线观看| 国产v片在线观看| www日韩精品| av成人免费网站| 91精品国产高清91久久久久久| 亚洲精品免费一区亚洲精品免费精品一区 | 一级特黄性色生活片| 中文字幕一二区| 伊人网在线综合| 一起操在线播放| 亚洲av无码成人精品区| 无码人妻久久一区二区三区蜜桃 | 国产5g成人5g天天爽| www五月天com| 超碰手机在线观看| 波多野结衣不卡| 超碰人人人人人人人| 成人免费毛片视频| 超碰在线国产97| 国产大片中文字幕| 国产高清免费在线观看| 国产成人麻豆免费观看| 丰满人妻一区二区三区大胸 | 天天色综合社区| 天天看天天摸天天操| 五月天婷婷综合网| 性色av蜜臀av色欲av| 亚洲 日本 欧美 中文幕| 小泽玛利亚一区二区三区视频| 午夜视频www| 在线看免费毛片| 亚洲精品激情视频| 亚洲天堂avav| av电影在线播放| 大又大又粗又硬又爽少妇毛片| 国产福利影院在线观看| 国产免费看av| www.久久色| 波多野结衣一二三四区| 日本三级黄色网址| 日韩视频在线观看一区二区三区| 少妇无码一区二区三区|