ElasticSearch 入門

ElasticSearch
ElasticSearch是一個基於Lucene的搜索服務器。它提供了一個分佈式多用戶能力的全文搜索引擎,基於RESTful web接口。Elasticsearch也使用Java開發並使用Lucene做爲其核心來實現全部索引和搜索的功能
Elasticsearch是一個開源的高擴展的分佈式全文檢索引擎,它能夠近乎實時的存儲、檢索數據;自己擴展性很好,能夠擴展到上百臺服務器,處理PB級別的數據。
爲何要用ElasticSearch
咱們創建一個網站或應用程序,並要添加搜索功能,可是想要完成搜索工做的建立是很是困難的。咱們但願搜索解決方案要運行速度快,咱們但願能有一個零配置和一個徹底免費的搜索模式,咱們但願可以簡單地使用JSON經過HTTP來索引數據,咱們但願咱們的搜索服務器始終可用,咱們但願可以從一臺開始並擴展到數百臺,咱們要實時搜索,咱們要簡單的多租戶,咱們但願創建一個雲的解決方案。所以咱們利用Elasticsearch來解決全部這些問題及可能出現的更多其它問題。
 
es安裝
 
java版本要求:最低1.7 
官網下載:
windows下安裝:
1.解壓下載的壓縮包,
2.編輯elasticsearch根目錄/config/elasticsearch.yml
   cluster .name : 集羣名 ,分佈式部署,確保該名稱惟一。
   network.host: 192.168.0.61 :ip地址
   http.port: 9200  端口
  
3.啓動根目錄下的bin文件夾下的elasticsearch.bat便可
 
kibana是一個與elasticsearch一塊兒工做的開源的分析和可視化的平臺。使用kibana能夠查詢、查看並與存儲在elasticsearch索引的數據進行交互操做。使用kibana能執行高級的數據分析,並能以圖表、表格和地圖的形式查看數據。 
windows下安裝:
1.解壓下載的壓縮包,
2.kibana根目錄下config/kibana.yml
  server.port :5601   kibana端口
  server.host :localhost ip地址
  elasticsearch.url : "http://192.168.0.61:9200"    es鏈接
3.啓動根目錄下的bin文件夾下的kibana.bat
 
打開瀏覽器 訪問 http://localhost:5601/
 
接下來就能夠操做es了
es操做
新建索引包含setting和mapping
PUT /my_index_name
{
  "settings": {
    "number_of_replicas": 1,
    "number_of_shards": 3,
    "analysis": {},
    "refresh_interval": "1s"
  },
  "mappings": {     
    "my_type_name": {    //type名字
      "properties": {    //type的字段屬性
        "title": {
          "type": "text",
          "analyzer": "ik_max_word"
        },
        "name":{
          "type": "text",
          "analyzer": "ik_max_word"
        },
        "num":{
          "type": "integer"
        }
      }
    }
  }
}

也能夠單首創建setting和mappinghtml

字段屬性建立好之後,若是要修改設置的某個字段的屬性是修改不了的,能夠java

添加數據web

POST my_index_name/my_type_name
{
  "title":"測試title",
  "name":"測試",
  "num":1
}

修改數據windows

POST my_index_name/my_type_name/AWZ8KV5GLlhkZVrwqqUS
{
  "title":"測試title",
  "name":"測試111",
  "num":1
}

刪除索引  瀏覽器

不能刪除某個類型服務器

DELETE my_index_name

 

 

es查詢
1.簡單基本操做
GET _search
{
  "query": {
    "match": {
      "FIELD": "TEXT"
    }
  }
}
GET /_search
{
  "query": {
    "bool": {  //組合查詢,各個子句之間的邏輯關係是與(and)
      "must": [  必須知足的條件 
        {
          "match": {  //普通匹配查詢 
            "username": "smith"  
          }
        }
      ],
      "must_not": [  //必須不知足某條件
        {
          "match_phrase": {  //短語匹配查詢
            "username": "granny smith"
          }
        }
      ],
      "filter": [  //過濾器 文檔必須匹配該過濾條件,跟must子句的惟一區別是,filter不影響查詢的score;
        {
          "exists": { //存在
            "field": "title"
          }
        }
      ]
    }
  },
  "aggs": {  //聚合
    "my_agg": {  //聚合名 
      "terms": {
        "field": "user",
        "size": 10
      }
    }
  },
  "highlight": {  //高亮
    "pre_tags": [
      "<em>"
    ],
    "post_tags": [
      "</em>"
    ],
    "fields": {
      "body": {
        "number_of_fragments": 1,
        "fragment_size": 20
      },
      "title": {}
    }
  },
  "size": 20,  //一次查詢的數據量
  "from": 100,  //從第幾條數據開始
  "_source": [  //要查詢的字段
    "title",
    "id"
  ],
  "sort": [  //排序
    {
      "_id": {
        "order": "desc"
      }
    }
  ]
}

多字段查詢app

"multi_match": {
  "query": "Elastic",  //匹配的字
  "fields": ["user.*", "title^3"],  //須要匹配的字段
  "type": "best_fields"    //查詢在內部執行的方式 best_fields(默認)查找與任何字段匹配的文檔
}multi_match

組合查詢elasticsearch

"bool": {
  "must": [],
  "must_not": [],
  "filter": [],
  "should": [],
  "minimum_should_match" : 1    //最小匹配度
}

範圍搜索分佈式

"range": {
  "age": {
    "gte": 10,
    "lte": 20,
    "boost": 2    
  }
}
相關文章
相關標籤/搜索