1. 程式人生 > >ElasticSearch從入門到使用

ElasticSearch從入門到使用

概述

本篇內容定位ElasticSearch入門介紹,其中包括ElasticSearch產生背景,特點,應用場景,安裝,使用(命令列,Java中引入),底層原理,等。

產生的背景

大資料時代,大量的資料只是被儲存,不能做實時決策分析,這時候需要一個全文搜尋,或者結構化資料的實時統計工具。
Elasticsearch 是一個分散式、可擴充套件、近實時的搜尋與資料分析引擎。 它能從專案一開始就賦予你的資料以搜尋、分析和探索的能力。

特點

分散式、可擴充套件、實時、處理PB級別的資料

應用場景

統計、搜尋

安裝方法

使用

基本使用

類似於MySQL,在某一類資料存入MySQL時,需要在MySQL中先建立庫(database),再建立表(table),然後把資料存入insert

進去,當需要查詢的時候就select,需要刪除就delete,需要更新就update
那麼ES作為一個搜尋引擎,是如何儲存資料的,又是如何查詢的,不需要了,又該怎麼刪除呢,並且當資料有誤時,能修改嗎?
1 . 再回答上面幾個問題之前需要先引入幾個概念

  • 索引
    索引是一類文件的集合,所有的操作比如索引(索引資料)、搜尋、分析都是基於索引完成的。
    在一個叢集中,可以定義任意數量的索引。
  • 型別
    型別可以理解成一個索引的邏輯分割槽,用於標識不同的文件欄位資訊的集合。
  • 文件
    文件是儲存資料資訊的基本單元,使用json來表示。
  • 節點
    一個ES伺服器就成為一個節點,多個ES伺服器就組成了叢集。
  • 分片與備份
    在ES中,索引會備份成分片,每個分片是獨立的lucene索引,可以完成搜尋分析儲存等工作。

2 . 舉例子
看了上面的定義描述,再通過例子來了解下。
現在有個People物件,需要儲存在ES中,People的定義如下:

public class People {
    private Long id;
    private String name;
    private String sex;
    private Float height;
    private Float weight;
    /**
     * 興趣愛好
     */
    private
String interests; }

可以建立一個索引名稱為people_index的索引,型別為people_type,型別是文件欄位資訊的集合,所以型別的json為

"properties": {
    "id": {
      "type": "long",
      "index": "not_analyzed"
    },
    "name": {
      "type": "string"
    },
    "sex": {
      "type": "string"
    },
    "height": {
      "type": "float",
      "index": "not_analyzed"
    },
    "weight":{
      "type": "float",
      "index": "not_analyzed"
    },
    "interests": {
      "type": "string",
      "analyzer": "ik"
    }
}

Java中引入

Web-Demo專案

底層原理

總結