大數據

【Elasticsearch 入門公開課】詳解 Elasticsearch URI Search 及 Mapping-回顧篇(4)

本週課程(15~18講)詳細介紹了 Elasticsearch URI Search 的基本概念,以及什麼是 Request Body 與 Query DSL,如何通過 Query String & Simple Query String 進行查詢,並對Dynamic Mapping 和常見字段類型進行了介紹。

講師:阮一鳴——eBay Pronto 平臺技術負責人、極客時間『Elasticsearch 核心技術與實戰』課程講師
課程為了更多同學能快速體驗 Elasticsearch,為大家提供了免費的阿里雲 Elasticsearch (3節點1核2G)的測試環境>>>>去開通

image.png

課程回顧

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

image.png

image.png

image.png

image.png

知識點 2 :Request Body與Query DSL簡介


在Elasticsearch 中,相對於高階的查詢,往往使用 Requedt Body 進行查詢。

分頁

在 Requedt Body 中,增加 “from”、“size”可以達到一個分頁的效果。

image.png

排序

在 Requedt Body 中,增加“sort”參數

image.png

_ source filtering

在所有的查詢中,往往“source”包含了所有文檔信息,當數據量大,且不需要拿到部分字段時,那麼就可以對“source”做過濾,增加那些需要查詢到的信息在“source”裡面。

image.png

腳本字段

腳本字段,可以使用 Elasticsearch 中的“painless”腳本,去計算出一個新的字段結果。

image.png

使用查詢表達式 — Match

通過"query”、“Match”的方式,在“comment”中填入信息,,通過 Match 當你填入兩個詞(Last Christmas),那麼往往默認是“Last”or“Christmas”,但如果你想同時出現,那麼需要加上“operator”:“AND”。

image.png

短語搜索 — Match Phrase

在進行“Phrase”查詢的時候,在“query”中的詞需要按照順序出現,也可以通過設置“slop”:1,可以設置“ query”的單詞間可以有一個字符。

image.png

知識點 3 :Query String&Simple Query String查詢


Query String

在 URI 查詢中,可以使用一些特定Query String,在 DSL 裡也支持 Query String 的方式查詢。

image.png

Simple Query String Query
類似 Query String,但會出現忽略錯誤語法的情況,且只支持部分語法查詢
1、ND OR NOT,會當做字符串處理
2、Term之間默認的關係是 OR,可以指定 Operator
3、查詢語句支持部分邏輯
• + 替代 AND
• | 替代 OR
• — 替代 NOT

image.png

知識點 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 查詢。

image.png

類型自動識別

image.png

Dynamic Mapping 設置

但我們在創建 _Index 時,“dynamic”可以創建為“False”、“true”、“strict”三中值,對應不同的情況。
• 設置為“true”,會出現新的文檔,及對應新的字段,那麼意味著文檔、字段可以被索引,同時Mapping會自動更新
• 設置為“False”,文檔還是可以傳入 Elasticsearch,但文檔新增字段不會被索引,Mapping也不會自動更新。
• 設置為“strict”,數據寫入直接出錯。

image.png

下週課程預告


點擊預約課程

19 | 顯式Mapping設置與常見參數介紹
20 | 多字段特性及Mapping中配置自定義Analyzer
21 | Index Template和Dynamic Template
22 | Elasticsearch聚合分析簡介

相關活動


更多折扣活動,請訪問阿里雲 Elasticsearch 官網

• 阿里雲 Elasticsearch 商業通用版,1核2G首月免費
阿里雲 Elasticsearch 日誌增強版,首月六折,年付六折
阿里雲 Logstash 2核4G首月免費


image.png

image.png

Leave a Reply

Your email address will not be published. Required fields are marked *