1. 程式人生 > >使用 Elasticsearch 實現部落格站內搜尋

使用 Elasticsearch 實現部落格站內搜尋

一直以來,為了優化本部落格站內搜尋效果和速度,我使用 bing 的 site: 站內搜尋做為資料來源,在服務端獲取、解析、處理並快取搜尋結果,直接輸出 HTML。這個方案唯一的問題是時效性難以保證,儘管我可以在釋出和修改文章時主動告訴 bing,但它什麼時候更新索引則完全不受我控制。

本著不折騰就渾身不自在的原則,我最終還是使用 Elasticsearch 搭建了自己的搜尋服務。Elasticsearch 是一個基於 Lucene 構建的開源、分散式、RESTful 搜尋引擎,很多大公司都在用,程式設計師的好夥伴 Github 的搜尋也用的是它。本文記錄我使用 Elasticsearch 搭建站內搜尋的過程,目前支援中文分詞、同義詞、標題匹配優先等常見策略,可以點選這裡體驗。

安裝 Elasticsearch

部署 Elasticsearch 最簡單的方法是使用 Elasticsearch Dockerfile 。為了更徹底地折騰,我沒有使用 Docker,好在手動安裝過程也不復雜。

我的虛擬機器和線上環境都是 Ubuntu 14.04.3 LTS,Elasticsearch 用的是目前最新的 2.1.1。一切開始之前,先要檢查機器上是否裝有 java 環境,如果沒有可以通過以下命令安裝:

sudo apt-get install openjdk-7-jre-headless

下載 Elasticsearch 2.1.1 壓縮包並解壓:

1 2 wget -c https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/zip/elasticsearch/2.1.1/elasticsearch-2.1.1.zip unzip elasticsearch-2.1.1.zip

我將解壓得到的 elasticsearch-2.1.1 目錄重新命名為 ~/es_root (名稱及位置沒有限制,可以將它挪到你認為合適的任何位置)。Elasticsearch 無需安裝,直接可以執行:

1 2 3 cd ~/es_root/bin/ chmod a+x elasticsearch ./elasticsearch

如果螢幕上沒有列印錯誤資訊,說明 Elasticsearch 服務已經成功啟動。新建一個終端,用 curl 驗證下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 curl -XGET http://127.0.0.1:9200/?pretty { "name" : "Goblyn", "cluster_name" : "elasticsearch", "version" : { "number" : "2.1.1", "build_hash" : "40e2c53a6b6c2972b3d13846e450e66f4375bd71", "build_timestamp" : "2015-12-15T13:05:55Z", "build_snapshot" : false, "lucene_version" : "5.3.1" }, "tagline" :
利用JQuery傳送ajax請求進行搜尋

前臺程式碼:(注意要匯入JQuery包,在lib中也要匯入gson-x.x.x.jar包) <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> &l

利用JQuery傳送ajax請求進行搜尋(Hibernate篇——超簡單系列)

此次任務是簡單的一次hibernate框架小訓練,利用上一篇的專案修改 1.導包,找到Hibernate-release-5.x.x.Final\lib\required下的所有包,copy到專案WEB-INF\lib下 2.開始編寫資料庫表(名字好煩,就亂取了) //建表h

solr搜尋之suggest和詞頻統計

solr站內搜尋與詞頻統計 一、suggest關鍵字搜尋(帶聯想建議提示功能) 二、autocompleter外掛的使用 三、詞頻統計   package com.product.pojo; import java.io.Serializable; import java.util

es搜尋筆記(一) Mysql 如何設定欄位自動獲取當前時間

es站內站內搜尋筆記(一) 第一節:   概述 使用elasticsearch進行網站搜尋,es是當下最流行的分散式的搜尋引擎及大資料分析的中介軟體,搜房網的主要功能:強大的搜尋框,與百度地圖相結合,實現地圖找房,包括前臺模組和後臺模組。   elasticsearch + mysql +kafka實

基於輕量級php搜尋sphider搜尋初級優化

轉載:https://blog.csdn.net/chijiaodaxie/article/details/48714373 站內搜尋初級優化 php1>. 概述: 站內搜尋引擎顧名思義即網站內的資訊搜尋引擎,隨著網路的發展,網站已經成為了企業或機構

牛人網站和部落---得高看得更遠(CV類)

先推薦兩個資源索引 首先是豆瓣一篇精彩的友鄰貼:http://www.douban.com/note/211748394/ Jack是豆瓣上很有影響力的重度使用者,這篇號召帖了網友眾多推薦,對於“慢體驗”的豆瓣,是個“快發現”的好資源。 另一個是鄒宇華的Google Reader:http:

javaEE Lucene,全文檢索,搜尋,入門程式。索引庫的新增

注意:搜尋使用的分析器(分詞器)要和建立索引時使用的分析器一致。 Field類(域物件): Test.java(入門程式 測試類): package com.xxx.lucene; import static org.junit.Assert.*; im

es簡單打造搜尋

最近挺忙的,在外出差,又同時幹兩個專案。白天一個晚上一個,特別是白天做的專案,馬上就要上線了,在客戶這裡 三天兩頭開會,問題很多真的很想好好靜下來懟程式碼,半夜做夢都能fix bugs~ 和客戶交流真的是門技術,一不小心你就會掉坑裡,慢慢來吧~  站內搜素其實也是老生常談,估計很多程式設計師門都做過或者接觸

搜尋

關於部落格 張戈部落格是關注網際網路以及分享IT運維工作經驗的個人部落格,主要涵蓋了作業系統運維、實用指令碼程式設計以及部落格網站建設等經驗教程。我的部落格宗旨:把最實用的經驗,分享給最需要的讀者,希望每一位來訪的朋友都能有所收穫!

elasticsearch 學習部落系列 ES 中 index 設定 Mapping(表結構)

通過上一篇 我們瞭解到ES中的一些概念,回顧一下: 幾個基本名詞 index: es裡的index相當於一個資料庫。 type: 相當於資料庫裡的一個表。 id: 唯一,相當於主鍵。 node:節點是es例項,一臺機器可以執行多個例項,但是同一臺機器上的例項在配置檔

Django學習筆記二:實現部落詳情,完善文章的分類和標籤

前面我已經學會了使用Django框架搭建一個簡單的部落格框架。接下來學習的就是如何完善部落格的功能。 部落格詳情 功能 當用戶點選文章的“繼續閱讀”按鈕時,實現瀏覽文章的具體內容。即當點選“繼續閱讀”時根據傳入的請求和文章的id引數跳轉到對應的

自定義.NET Calarder日曆控制元件(實現部落園日曆)

這幾天看了下.net 日曆控制元件,去Google了下出來很多,大家都知道.netframework版本中自帶的日曆控制元件只有日期沒有備註的,比如我在1月1日下面要顯示出‘元旦節’這三個字,那要怎麼做呢? 下面先熟悉下Calarder控制元件的常用屬性: Selectio

github+hexo搭建自己的部落網站(五)進階配置(暢言實現部落的評論)

如何對如何搭建hexo+github可以檢視我第一篇入門文章:http://www.cnblogs.com/chengxs/p/7402174.html 詳細的可以檢視hexo部落格的演示:https://saucxs.github.io/ 同時綁定了域名:http://w