1. 程式人生 > >第十二篇 elasticsearch中的mapping透徹理解

第十二篇 elasticsearch中的mapping透徹理解

首先插入幾條資料,讓es自動為我們建立一個索引

PUT /website/article/1
{
  "post_date": "2017-01-01",
  "title": "my first article",
  "content": "this is my first article in this website",
  "author_id": 11400
}

PUT /website/article/2
{
  "post_date": "2017-01-02",
  "title": "my second article",
  "content": "this is my second article in this website"
, "author_id": 11400 } PUT /website/article/3 { "post_date": "2017-01-03", "title": "my third article", "content": "this is my third article in this website", "author_id": 11400 }

嘗試各個搜尋

GET /website/article/_search?q=2017  //查出3條結果             
GET /website/article/_search?q=2017-01-01 //也查出3條結果
GET /website/article/_search?q=post_date:2017
-01-01 //查出1條結果 GET /website/article/_search?q=post_date:2017 //查出1條結果

引出一個問題:為什麼搜尋結果會不一致
mapping,就是index的type的元資料,每個type都有一個自己的mapping,決定了資料型別,建立倒排索引的行為,還有進行搜尋的行為

對mapping的透徹理解

(1)往es裡面直接插入資料,es會自動建立索引,同時建立type以及對應的mapping
(2)mapping中就自動定義了每個field的資料型別
(3)不同的資料型別(比如說text和date),可能有的是exact value,有的是full text
(4)exact value

,在建立倒排索引的時候,分詞的時候,是將整個值一起作為一個關鍵詞建立到倒排索引中的;full text,會經歷各種各樣的處理,分詞,normaliztion(時態轉換,同義詞轉換,大小寫轉換,單複數轉換),才會建立到倒排索引中
(5)同時呢,exact value和full text型別的field就決定了,在一個搜尋過來的時候,對exact value field或者是full text field進行搜尋的行為也是不一樣的,會跟建立倒排索引的行為保持一致;比如說exact value搜尋的時候,就是直接按照整個值進行匹配,full text query string,也會進行分詞和normalization再去倒排索引中去搜索
(6)可以用es的dynamic mapping,讓其自動建立mapping,包括自動設定資料型別;也可以提前手動建立index和type的mapping,自己對各個field進行設定,包括資料型別,包括索引行為,包括分詞器,等等

mapping的核心資料型別

String、byte、short、intege、long、float、double、boolean、date

dynamic mapping

true or false –> boolean
123 –> long
123.45 –> double
2017-01-01 –> date
“hello world” –> string/tex

檢視mapping
GET /index/_mapping/type

相關推薦

elasticsearchmapping透徹理解

首先插入幾條資料,讓es自動為我們建立一個索引 PUT /website/article/1 { "post_date": "2017-01-01", "title": "my first article", "content": "this

Elasticsearch搜尋引擎-聚合分析

文章目錄 聚合分析簡介 指標聚合 max min sum avg 文件計數 佔比百分位對應的值統計 統計值小於等於指定值的文件佔比 求文件幾種的座標點範圍 求中心點座標值 桶聚合

:WindbgUSB2.0除錯環境的搭建

2011年的時候,為了開發USB Mass storage -- UASP (USB attached SCSI Protocol)的裝置驅動程式,從米國買了兩個USB2.0的除錯小裝置(如下圖,每個似乎80美刀,賊貴的東西)。 主要是用來替代串列埠115200波特率的響應

【設計模式】:車票購買場景的代理模式講解

![](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/7024b047f558499f9194ab6fd34d9306~tplv-k3u1fbpfcp-zoom-1.image) 早在 Spring AOP 篇的講解中,我已經寫過關於 AOP 部分是如何

:HTML基礎

項目 logs 瀏覽器 圖片 handle 標題欄 width light 標題 本篇內容 HTML概述 HTML常用基本標簽 CSS格式引入 一、 HTML概述 1.定義: HTML,超文本標記語言,寫給瀏覽器的語言,目前網絡上應用最廣泛的語言。HTML也在不斷

spring boot實戰()整合RabbitMQ

this direct 還需要 添加屬性 創建 還需 topic start routing 前言 本篇主要講述Spring Boot與RabbitMQ的整合,內容非常簡單,純API的調用操作。 操作之間需要加入依賴Jar [html] view plain cop

JAVA-初步認識-章-JVM的多線程分析

finalize 不定 調用函數 處理 編譯 出現 bject 自動運行 jvm 一. 我們學java程序學到現在,到底是多線程的,還是單線程的?(現實中多線程是一直存在的,我們只是才開始學習這個概念而已,沒學過不代表不存在。) 虛擬機的啟動本身就依賴了多條線程,為什麽?

圖解Python 【】:Django 基礎

aps 不同的 mage 清空 font 一個 取數 ccf pos 本節內容一覽表: Django基礎:http://www.ziqiangxuetang.com/django/django-tutorial.html 一、Django簡介 Django文

:數據庫操作

mysq 查詢 alc mys clas 多對多 class 操作 連接查詢 一、數據庫簡紹 二、mysql 增刪改查 三、mysql 外鍵關聯 四、mysql 連接查詢 五、mysql 事務與索引 六、ORM 簡紹 七、sqlalchemy 常用語法 八、sqlalche

python全棧開發【】Python的模塊和包

提高 通過 color 操作 查看 綁定 packages 關系 搜索路徑 一、模塊 1.import.... 一個py文件就可以作為一個模塊 模塊的導入:直接導入文件的名字,不需要帶著後綴 模塊中的函數調用:模塊名.函數名() 導入模塊的時候做了三件事:1.首先開辟了一個

MySQL數據庫學習【】pymysql模塊

http sele 失敗 nec relative 執行sql clas nbsp 兩種方法 一、安裝的兩種方法 第一種 #安裝 pip3 install pymysql 第二種 二、鏈接,執行sql,關閉(遊標) import pymysql user= i

web前端【】jQuery文檔相關操作

scroll 知識點 eight 查看 for otto fix jquer utf-8 一、相關知識點總結1、CSS .css() - .css("color") -> 獲取color css值 - .css("color", "#ff

Django 【】Form組件進階

imp com htm 更新 mode attr mage index upd 一、定義的規則 class TeacherForm(Form): #必須繼承Form # 創建字段,本質上是正則表達式 username = fields.CharFiel

Python函數之全局變量&局部變量&遞歸函數

量變 錯誤 總結 bsp code 類型 hang qup 說明 全局變量:在定義的時候,頂頭寫的,沒有任何縮進的變量就是全局變量。 全局變量的特點:在當前文件裏的任何地方都可以進行調用 局部變量:在子程序裏定義的變量,就是局部變量。 子程序:比如.py文件裏,寫的函數就是

史上最簡單的SpringCloud教程 | : 斷路器監控(Hystrix Dashboard)

詳細 pre 良好的 依次 alt ews 需要 ext 數據監控 最新Finchley版本,請訪問:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f12-dash/或者http://blog.csdn.net

Python開發【】:DOM

http://www.cnblogs.com/wupeiqi/articles/5643298.html     文件物件模型(Document Object Model,DOM)是一種用於HTML和XML文件的程式設計介面。它給文件提供了一種結構化的表示方法,可以改變文件的內容和呈

:隨手記一下javaBean的setter,getter方法的命名問題

今天測試新寫的一個系統表的完整Ibatis配置和呼叫,因為經驗少,到處撞牆、、、其他的坑爹問題就不提了       測試sqlMapClient.queryForList("...",param)這個方法,查詢正常有3條記錄,但是結果卻是[

Android提高之藍芽感測應用

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

【資料結構與演算法】之樹的基本概念及常用操作的Java實現(叉樹為例) ---

樹是一種非線性資料結構,這種資料結構要比線性資料結構複雜的多,因此分為三篇部落格進行講解: 第一篇:樹的基本概念及常用操作的Java實現(二叉樹為例) 第二篇:二叉查詢樹 第三篇:紅黑樹 本文目錄: 1、基本概念 1.1  什麼是樹 1.2  樹的

12-撩課-Java面試寶典-

學習地址: 撩課-JavaWeb系列1之基礎語法-前端基礎 撩課-JavaWeb系列2之XML 撩課-JavaWeb系列3之MySQL 撩課-JavaWeb系列4之JDBC 撩課-JavaWeb系列5之web伺服器-idea 91.如何提升資料查詢的效率? 1.首先檢查表的結構是否合