本周課程(15~18講)詳細介紹了 Elasticsearch URI Search 的基本概念,以及什麼是 Request Body 與 Query DSL,如何通過 Query String & Simple Query String 進行查詢,并對Dynamic Mapping 和常見字段類型進行了介紹。
https://developer.aliyun.com/topic/elasticsearch講師:阮一鳴——eBay Pronto 平台技術負責人、極客時間『Elasticsearch 核心技術與實戰』課程講師
課程為了更多同學能快速體驗 Elasticsearch,為大家提供了免費的阿裡雲 Elasticsearch (3節點1核2G)的測試環境>>>>
去開通

課程回顧
15 | URI Search 詳解 16 | Request Body 與 Query DSL 簡介 17 | Query String & Simple Query String 查詢 18 | Dynamic Mapping 和常見字段類型知識點 1 :URI Search詳解
URI Search 是通過 URI 指定參數實作搜尋,
• “q”指定查詢語句
• “df”預設字段,不指定時,會對所有字段進行查詢
• “Sort”排序/from 和size 用于分頁
• “proflie”可以檢視查詢是如何被執行的
Query String Syntax
知識點 2 :Request Body與Query DSL簡介
在Elasticsearch 中,相對于高階的查詢,往往使用 Requedt Body 進行查詢。
分頁
在 Requedt Body 中,增加 “from”、“size”可以達到一個分頁的效果。
排序
在 Requedt Body 中,增加“sort”參數
_ source filtering
在所有的查詢中,往往“source”包含了所有文檔資訊,當資料量大,且不需要拿到部分字段時,那麼就可以對“source”做過濾,增加那些需要查詢到的資訊在“source”裡面。
腳本字段
腳本字段,可以使用 Elasticsearch 中的“painless”腳本,去計算出一個新的字段結果。
使用查詢表達式 — Match
通過"query”、“Match”的方式,在“comment”中填入資訊,,通過 Match 當你填入兩個詞(Last Christmas),那麼往往預設是“Last”or“Christmas”,但如果你想同時出現,那麼需要加上“operator”:“AND”。
短語搜尋 — Match Phrase
在進行“Phrase”查詢的時候,在“query”中的詞需要按照順序出現,也可以通過設定“slop”:1,可以設定“ query”的單詞間可以有一個字元。
知識點 3 :Query String&Simple Query String查詢
Query String
在 URI 查詢中,可以使用一些特定Query String,在 DSL 裡也支援 Query String 的方式查詢。
Simple Query String Query
類似 Query String,但會出現忽略錯誤文法的情況,且隻支援部分文法查詢
1、ND OR NOT,會當做字元串處理
2、Term之間預設的關系是 OR,可以指定 Operator
3、查詢語句支援部分邏輯
• + 替代 AND
• | 替代 OR
• — 替代 NOT
知識點 4 :Dynamic Mapping和常見字段類型
什麼是 Mapping
一、Mapping 類似資料庫中的 schema 的定義
• 定義索引中字段的名稱
• 定義字段資料類型,如字元串、數字、布爾....
• 字段,反向索引的相關配置,(Analyzed or Not Analyzed,Analyzer)
二、Mapping 會将 JSON 文檔映射成 Lucene 所需要的扁平格式
三、一個 Mapping 屬于一個索引的 Type
常見字段資料類型
在 Elasticsearch 常見字段類型,往往有以下幾種;
一、簡單類型,包括
• Text / Keyword
• Date
• Integer / Floating
• Boolean
• IPv4 & IPv6
二、複雜類型——對象和嵌套對象
• 對象類型 / 嵌套類型
三、特殊類型
• geo_point & geo_shape / percolator
什麼是 Dynamic Mapping
• 在寫入新的文檔時,如果索引不存在,會自動建立索引。
• Dynamic Mapping 的機制,使得我們無需手動定義 Mappings。Elasticsearch 會自動根據文檔資訊,推算出字段的類型。偶爾會出現推送不正确的情況,如地理位置資訊。
• 但類型設定不正确時,會導緻一些功能無法正常運作,如 Range 查詢。
類型自動識别
Dynamic Mapping 設定
但我們在建立 _Index 時,“dynamic”可以建立為“False”、“true”、“strict”三中值,對應不同的情況。
• 設定為“true”,會出現新的文檔,及對應新的字段,那麼意味着文檔、字段可以被索引,同時Mapping會自動更新
• 設定為“False”,文檔還是可以傳入 Elasticsearch,但文檔新增字段不會被索引,Mapping也不會自動更新。
• 設定為“strict”,資料寫入直接出錯。
下周課程預告
點選預約課程
19 | 顯式Mapping設定與常見參數介紹 20 | 多字段特性及Mapping中配置自定義Analyzer 21 | Index Template和Dynamic Template 22 | Elasticsearch聚合分析簡介相關活動
更多折扣活動,請通路
阿裡雲 Elasticsearch 官網 • 阿裡雲 Elasticsearch 商業通用版,1核2G首月免費•
阿裡雲 Elasticsearch 日志增強版,首月六折,年付六折 阿裡雲 Logstash 2核4G首月免費