分散式搜索引擎Elasticsearch的簡單使用

来源:http://www.cnblogs.com/chenpingzhao/archive/2016/10/24/5991579.html
-Advertisement-
Play Games

官方網址:https://www.elastic.co/products/elasticsearch/ 一、特性 1、支持中文分詞 2、支持多種數據源的全文檢索引擎 3、分散式 4、基於lucene的開源搜索引擎 5、Restful api 二、資源 smartcn, 預設的中文分詞 :https: ...


官方網址:https://www.elastic.co/products/elasticsearch/

一、特性

1、支持中文分詞

2、支持多種數據源的全文檢索引擎

3、分散式

4、基於lucene的開源搜索引擎

5、Restful api

二、資源

  • smartcn, 預設的中文分詞 :https://github.com/elasticsearch/elasticsearch-analysis-smartcn

  • mmseg :https://github.com/medcl/elasticsearch-analysis-mmseg

  • ik:https://github.com/medcl/elasticsearch-analysis-ik

  • pinyin, 拼音分詞可用於輸入拼音提示中文 :https://github.com/medcl/elasticsearch-analysis-pinyin

  • stconvert, 中文簡繁體互換 :https://github.com/medcl/elasticsearch-analysis-stconvert

  • elasticsearch-servicewrapper:https://github.com/elasticsearch/elasticsearch-servicewrapper

  • Elastic HQ,elasticsearch的監控工具:http://www.elastichq.org

  • elasticsearch-rtf :https://github.com/medcl/elasticsearch-rtf

三、安裝

  • 伺服器:Linux(centos 6.x)

  • java環境:JDK 1.8.0

  • elasticsearch:2.3.1

  • elasticsearch-jdbc(數據源插件):2.3.1

  • IK Analysis(中文分詞插件):1.9.1

1、安裝Java

yum install java-1.8.0

2、安裝Elasticsearch

#創建.repo文件(elasticsearch.repo)
cat >> /etc/yum.repos.d/elasticsearch.repo << EOF
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=https://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
EOF

#導入key:
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
yum install elasticsearch

3、創建用戶

如果是用root賬號啟動,會報以下錯誤

Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root. at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:93) at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:144) at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:285) at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35) Refer to the log for complete error details.

這是出於系統安全考慮設置的條件。由於ElasticSearch可以接收用戶輸入的腳本並且執行,為了系統安全考慮, 建議創建一個單獨的用戶用來運行ElasticSearch

groupadd elsearch
useradd elsearch -g elsearch -p elasticsearch

4、創建目錄

mkdir -p  /data/elasticsearch/data
mkdir -p  /data/elasticsearch/logs
chown -R elsearch:elsearch /data/elasticsearch/data
chown -R elsearch:elsearch /data/elasticsearch/logs

5、生成配置文件(/etc/elasticsearch/elasticsearch.yml)

#集群名(同一個集群,名稱必須相同)
cluster.name: my-application
#服務節點名(每個服務節點不一樣)
node.name: node-1
#數據存儲路徑
path.data: /data/elasticsearch/data
#服務日誌路徑
path.logs: /data/elasticsearch/logs
#服務ip地址
network.host: 0.0.0.0
#服務埠
http.port: 9200

四、IK的安裝

1.安裝maven工具

wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo
yum install apache-maven

2.下載ik源碼包

git clone https://github.com/medcl/elasticsearch-analysis-ik

3.生成jar插件包

mvn clean
mvn compile
mvn package

unzip target/releases/elasticsearch-analysis-ik-*.zip
cp -r target/releases/ /usr/share/elasticsearch/plugins/ik

4.配置詞庫(ik自帶搜狗詞庫)

配置:/usr/share/elasticsearch/plugins/ik/config/ik/IKAnalyzer.cfg.xml

<entry key="ext_dict">custom/mydict.dic;custom/single_word_low_freq.dic;custom/sougou.dic</entry>

將jar包複製到Elasticsearch的plugins/analysis-ik 目錄下,再把解壓出的ik目錄(配置和詞典等),複製到Elasticsearch的config 目錄下。然後編輯配置文件elasticsearch.yml ,在後面加一行:

index.analysis.analyzer.ik.type : "ik"

重啟service elasticsearch restart

然後錄入數據,創建索引

 

五、elasticsearch-jdbc

1、使用feeder方式

wget http://xbib.org/repository/org/xbib/elasticsearch/importer/elasticsearch-jdbc/2.3.1.0/elasticsearch-jdbc-2.3.1.0-dist.zip
unzip elasticsearch-jdbc-2.3.1.0-dist.zip

編輯數據導入腳本import.sh

export JDBC_IMPORTER_HOME=/elasticsearch-jdbc-2.3.1.0

bin=$JDBC_IMPORTER_HOME/bin
lib=$JDBC_IMPORTER_HOME/lib
echo '{
"type" : "jdbc",
"jdbc": {
"url":"jdbc:mysql://127.0.0.1:3306/dbtest",
"user":"root",
"password":"123456",
"sql":"select * from test_tb",
"index" : "customer",
"type" : "external"
}}' | java \
    -cp "${lib}/*" \
    -Dlog4j.configurationFile=${bin}/log4j2.xml \
    org.xbib.tools.Runner \
    org.xbib.tools.JDBCImporter

測試

curl 'localhost:9200/customer/external/_search?pretty&q=*'

2、使用river方式

#安裝elasticsearch
curl -OL https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.4.2.zip

cd $ES_HOME
unzip path/to/elasticsearch-1.4.2.zip

#安裝JDBC插件
./bin/plugin --install jdbc --url http://xbib.org/repository/org/xbib/elasticsearch/plugin/elasticsearch-river-jdbc/1.4.0.6/elasticsearch-river-jdbc-1.4.0.6-plugin.zip

#下載mysql driver
curl -o mysql-connector-java-5.1.33.zip -L 'http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.33.zip/from/http://cdn.mysql.com/'
cp mysql-connector-java-5.1.33-bin.jar $ES_HOME/plugins/jdbc/ chmod 644 $ES_HOME/plugins/jdbc/*

#啟動elasticsearch
./bin/elasticsearch

#停止river
curl -XDELETE 'localhost:9200/_river/my_jdbc_river/'

JDBC插件參數

curl -XPUT 'localhost:9200/_river/my_jdbc_river/_meta' -d '{
    "type" : "jdbc",
    "jdbc" : {
        "url" : "jdbc:mysql://localhost:3306/test",
        "user" : "",
        "password" : "",
        "sql" : "select * from orders",
        "index" : "myindex",
        "type" : "mytype",
        ...
    }
}'

如果一個數組傳遞給jdbc欄位,多個river源也是可以的

curl -XPUT 'localhost:9200/_river/my_jdbc_river/_meta' -d '{
     <river parameters>
    "type" : "jdbc",
    "jdbc" : [ {
         <river definition 1>
    }, {
         <river definition 2>
    } ]
}'

curl -XPUT 'localhost:9200/_river/my_jdbc_river/_meta' -d '{
     "type" : "jdbc",
     "jdbc" : {
         "driver" : "com.mysql.jdbc.Driver",
         "url" : "jdbc:mysql://localhost:3306/test",
         "user" : "root",
         "password" : "123456",
         "sql" : "select * from test.student;",
         "interval" : "30",
         "index" : "test",
         "type" : "student"
     }
 }’

查看ES是否已經同步了這些數據  

curl -XGET 'localhost:9200/test/student/_search?pretty&q=*'

官網地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html

 

參考

https://www.elastic.co/guide/en/elasticsearch/guide/current/empty-search.html

https://github.com/medcl/elasticsearch-analysis-ik

http://blog.csdn.net/clementad/article/details/46898013

https://endymecy.gitbooks.io/elasticsearch-guide-chinese/content/elasticsearch-river-jdbc.html

https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html

https://github.com/jprante/elasticsearch-jdbc

http://www.voidcn.com/blog/wojiushiwo987/article/p-6058574.html

http://leotse90.com/2015/11/11/ElasticSearch%E4%B8%8EMySQL%E6%95%B0%E6%8D%AE%E5%90%8C%E6%AD%A5%E4%BB%A5%E5%8F%8A%E4%BF%AE%E6%94%B9%E8%A1%A8%E7%BB%93%E6%9E%84/

http://www.jianshu.com/p/638ff7b848cc

http://www.cnblogs.com/buzzlight/p/logstash_elasticsearch_kibana_log.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 功能概述 DDL,資料庫定義語言,創建,修改,刪除資料庫,表,視圖,索引,約束條件等 DML,資料庫操縱語言,對資料庫中的數據進行增,刪,改,查 DCL,資料庫定義語言,對資料庫總數據的訪問設置許可權 SQL語言是集DDL,DML,DCL為一體的資料庫語言,學好資料庫首先要掌握下麵9個引導詞 DDL語... ...
  • 邏輯選擇函數,判斷一個條件,根據結果的不同,返回不同的值,這類函數,可以看作是case語句的shorthand。 1,IIF 函數 該函數判斷一個邏輯表達式,如果結果為True,返回一個表達式;如果為False,返回另外一個表達式。 例如:判斷兩個變數的值,返回不同的結果 2,CHOOSE 函數 根 ...
  • 1、連接ORACLE8/8I/9I資料庫(thin模式) <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ page import="java.sql.*" %><%@ page contentType=" ...
  • File->New->File->點擊->在編輯處出輸入:文件名.properties 文件的主要功能連接資料庫,例如: driver=oracle.jdbc.OracleDriverurl=jdbc:oracle:thin:@localhost:1521/XEusername=a001passwo ...
  • 環境:centos7 參考:http://blog.csdn.net/lk10207160511/article/details/50364088 步驟如下: 安裝redis: 打開終端 輸入 su 切換到root 用戶 輸入密碼 輸入 cd 進入root目錄 安裝gcc 已經安裝可跳過 安裝指令 ...
  • 1.添加新用戶並分配root許可權:先用root許可權登陸adduser xxx(你設置的用戶名)passwd xxx(省略輸入密碼)放到wheel組中:gpasswd -a xxx wheel切換到xxx用戶:su xxx(此時並沒有許可權)命令前面加上sudo,就有root許可權操作 2.禁止linux ...
  • Vi編輯器是Unix系統上早先的編輯器,在GNU項目將Vi編輯器移植到開源世界時,他們決定對其作一些改進。 於它不再是以前Unix中的那個原始的Vi編輯器了,開發人員也就將它重命名為Vi improved,或Vim。 為了方便使用,幾乎所有Linux發行版都創建了一個名為vi的別名,指向vim程式。 ...
  • 1、對gdb進行簽名,簽名過程詳見:http://jingyan.baidu.com/article/d169e1864dc24d436611d839.html; 2、重新啟動系統,同時按住鍵盤上的command + r 鍵進入系統恢復模式; 3、點擊上方菜單欄,實用工具-》終端,輸入命令:csru ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...