天天看點

【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)的測試環境>>>>

去開通
https://developer.aliyun.com/topic/elasticsearch
【Elasticsearch 入門公開課】詳解 Elasticsearch URI Search 及 Mapping-回顧篇(4)
https://developer.aliyun.com/topic/elasticsearch

課程回顧

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

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

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

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

分頁

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

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

排序

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

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

_ source filtering

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

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

腳本字段

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

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

使用查詢表達式 — Match

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

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

短語搜尋 — Match Phrase

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

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

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

Query String

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

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

Simple Query String Query

類似 Query String,但會出現忽略錯誤文法的情況,且隻支援部分文法查詢

1、ND OR NOT,會當做字元串處理

2、Term之間預設的關系是 OR,可以指定 Operator

3、查詢語句支援部分邏輯

• + 替代 AND

• | 替代 OR

• — 替代 NOT

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

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

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

類型自動識别

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

Dynamic Mapping 設定

但我們在建立 _Index 時,“dynamic”可以建立為“False”、“true”、“strict”三中值,對應不同的情況。

• 設定為“true”,會出現新的文檔,及對應新的字段,那麼意味着文檔、字段可以被索引,同時Mapping會自動更新

• 設定為“False”,文檔還是可以傳入 Elasticsearch,但文檔新增字段不會被索引,Mapping也不會自動更新。

• 設定為“strict”,資料寫入直接出錯。

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

下周課程預告

點選預約課程

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

相關活動

更多折扣活動,請通路

阿裡雲 Elasticsearch 官網 • 阿裡雲 Elasticsearch 商業通用版,1核2G首月免費

阿裡雲 Elasticsearch 日志增強版,首月六折,年付六折 阿裡雲 Logstash 2核4G首月免費
【Elasticsearch 入門公開課】詳解 Elasticsearch URI Search 及 Mapping-回顧篇(4)
【Elasticsearch 入門公開課】詳解 Elasticsearch URI Search 及 Mapping-回顧篇(4)