日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Elasticsearch学习笔记1

發布時間:2024/4/14 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Elasticsearch学习笔记1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

啟動es:

/bin/elasticsearch

瀏覽器訪問: http://localhost:9400/_count?pretty請求文檔數量,?pretty表示格式化輸出

一個 Elasticsearch 集群可以 包含多個索引 ,相應的每個索引可以包含多個類型。 這些不同的類型存儲著多個文檔 ,每個文檔又有多個屬性

索引(名詞):

如前所述,一個 索引 類似于傳統關系數據庫中的一個 數據庫 ,是一個存儲關系型文檔的地方。 索引 (index) 的復數詞為 indices 或 indexes 。

索引(動詞):

索引一個文檔 就是存儲一個文檔到一個 索引 (名詞)中以便它可以被檢索和查詢到。這非常類似于 SQL 語句中的 INSERT 關鍵詞,除了文檔已存在時新文檔會替換就文檔情況之外。

倒排索引:

關系型數據庫通過增加一個 索引 比如一個 B樹(B-tree)索引 到指定的列上,以便提升數據檢索速度。Elasticsearch 和 Lucene 使用了一個叫做 倒排索引 的結構來達到相同的目的。

一個文檔必須包含三個元數據:

_index 索引 _type 對象類別 _id 文檔標識

文檔增刪改查

增加

POST http://localhost:9400/megacorp/employee/1 {"first_name" : "Douglas","last_name" : "Fir","age" : 35,"about": "I like to build cabinets","interests": [ "forestry" ] }

如果指定的ID的文檔已經存在的話,將會覆蓋這個ID的文檔數據

如果數據沒有自然的ID,ElasticSearch可以自動生成ID,這時應該如下增加數據:

POST http://localhost:9400/megacorp/employee/ {"title": "My second blog entry","text": "Still trying this out...","date": "2014/01/01" }

如果想在對應的ID不存在時才進行索引文檔的話,增加_create或者設置op_type為create如下操作:

POST http://localhost:9400/megacorp/employee/1/_create or POST http://localhost:9400/megacorp/employee/1/_create?op_type=create

修改

同創建時的PUT方法,增加_update表示更新文檔一部分 可以增加?version參數進行并發下的沖突處理

POST /website/blog/1/_update {"doc" : {"tags" : [ "testing" ],"views": 0} }

刪除

DELETE http://localhost:9400/megacorp/employee/1

查找

GET http://localhost:9400/megacorp/employee/_search

搜索

檢查文檔是否存在

HEAD /megacorp/employee/1

Query-string搜索

GET /megacorp/employee/_search

返回結果放在數組 hits 中。一個搜索默認返回十條結果。

可以將簡單的搜索條件放到url中:

GET http://localhost:9400/megacorp/employee/_search?q=first_name:John

查詢表達式

簡單查詢

GET /megacorp/employee/_search {"query" : {"match" : {"last_name" : "Smith"}} }

增加過濾查詢

GET /megacorp/employee/_search {"query" : {"bool": {"must": {"match" : {"last_name" : "smith" }},"filter": {"range" : {"age" : { "gt" : 30 } } }}} }

短語匹配match_phrasematch的區別:match_phrase會明確匹配查詢的條件,不會進行分詞查詢,match會分詞查詢

高亮查詢

查詢結果會在句子中匹配的詞組增加<em>標簽包裹,

詳細高亮查詢:高亮查詢

GET /megacorp/employee/_search {"query" : {"match_phrase" : {"about" : "rock climbing"}},"highlight": {"fields" : {"about" : {}}} }

查詢可以指定timeout時間

GET /_search?timeout=10ms

查詢分頁

GET /_search?size=5 GET /_search?size=5&from=5 GET /_search?size=5&from=10

在分布式系統中深度分頁

理解為什么深度分頁是有問題的,我們可以假設在一個有 5 個主分片的索引中搜索。 當我們請求結果的第一頁(結果從 1 到 10 ),每一個分片產生前 10 的結果,并且返回給 協調節點 ,協調節點對 50 個結果排序得到全部結果的前 10 個。

現在假設我們請求第 1000 頁--結果從 10001 到 10010 。所有都以相同的方式工作除了每個分片不得不產生前10010個結果以外。 然后協調節點對全部 50050 個結果排序最后丟棄掉這些結果中的 50040 個結果。

可以看到,在分布式系統中,對結果排序的成本隨分頁的深度成指數上升。這就是 web 搜索引擎對任何查詢都不要返回超過 1000 個結果的原因。

轉載于:https://my.oschina.net/u/2299936/blog/1560391

總結

以上是生活随笔為你收集整理的Elasticsearch学习笔记1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。