1. 程式人生 > >分散式全文檢索引擎之ElasticSearch

分散式全文檢索引擎之ElasticSearch

一 什麼是 ElasticSearch

Elasticsearch 是一個分散式可擴充套件的實時搜尋和分析引擎,一個建立在全文搜尋引擎 Apache Lucene(TM) 基礎上的搜尋引擎.當然 Elasticsearch 並不僅僅是 Lucene 那麼簡單,它不僅包括了全文搜尋功能,還可以進行以下工作:

  • 分散式實時檔案儲存,並將每一個欄位都編入索引,使其可以被搜尋。
  • 可實現億級資料實時查詢
  • 實時分析的分散式搜尋引擎。
  • 可以擴充套件到上百臺伺服器,處理PB級別的結構化或非結構化資料。

二 安裝(windows下)

安裝包下載地址

注意:Elasticsearch是用Java開發的,最新版本的Elasticsearch需要安裝jdk1.8以上的環境

安裝包下載完,解壓,進入到bin目錄,啟動 elasticsearch.bat 即可

三 python操作ElasticSearch

# -*- coding:utf-8 -*-
# Author : liuqingzheng

from elasticsearch import Elasticsearch

obj = Elasticsearch()
# 建立索引(Index)
result = obj.indices.create(index='user', body={"userid":'1','username':'lqz'},ignore=400)
# print(result)
# 刪除索引 # result = obj.indices.delete(index='user', ignore=[400, 404]) # 插入資料 # data = {'userid': '1', 'username': 'lqz','password':'123'} # result = obj.create(index='news', doc_type='politics', id=1, body=data) # print(result) # 更新資料 ''' 不用doc包裹會報錯 ActionRequestValidationException[Validation Failed: 1: script or doc is missing
''' # data ={'doc':{'userid': '1', 'username': 'lqz','password':'123ee','test':'test'}} # result = obj.update(index='news', doc_type='politics', body=data, id=1) # print(result) # 刪除資料 # result = obj.delete(index='news', doc_type='politics', id=1) # 查詢 # 查詢所有文件 query = {'query': {'match_all': {}}} # 查詢名字叫做jack的所有文件 # query = {'query': {'term': {'username': 'lqz'}}} # 查詢年齡大於11的所有文件 # query = {'query': {'range': {'age': {'gt': 11}}}} allDoc = obj.search(index='news', doc_type='politics', body=query) print(allDoc['hits']['hits'][0]['_source'])