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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)

發(fā)布時(shí)間:2023/12/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 前言
  • 一、基本概念
    • 1. Node節(jié)點(diǎn) 與 Cluster集群
    • 2. Index 索引
    • 3. Document文檔
    • 4. Type類型
    • 5. 邏輯對(duì)比
    • 6. 物理設(shè)計(jì)
  • 二、ES的命令風(fēng)格
  • 三、新建和刪除index索引
  • 四、分詞器使用和學(xué)習(xí)
    • 1. 理論學(xué)習(xí)
    • 2. 使用kibana測試
  • 五、數(shù)據(jù)操作
    • 1. 創(chuàng)建索引
    • 2. 字段類型總結(jié)
    • 3. 查看規(guī)則信息
    • 4. 系統(tǒng)命令
    • 5 添加數(shù)據(jù)
    • 6. 修改數(shù)據(jù)
      • a. PUT修改(不推薦)
      • b. _update修改(推薦)
    • 7. 刪除
    • 7. 簡單查詢
    • 8.復(fù)雜查詢
    • 9 過濾結(jié)果
    • 10. 排序
    • 11. 分頁查詢
    • 12. 布爾查詢
    • 13. 過濾器
    • 14. 空格 匹配多個(gè)條件
    • 15. term 精確查詢
      • i. term分析
      • ii. 兩個(gè)類型 text keyword 細(xì)節(jié)分析
        • a. 6版本創(chuàng)建索引,指定規(guī)則
        • b. 7版本創(chuàng)建索引,指定規(guī)則
        • c. **添加數(shù)據(jù)**
        • d. `elasticsearch-head` 的Google插件,查看 `testdb` 索引數(shù)據(jù)
        • e. `elasticsearch-head` 的Google插件,查看 `testdb` 映射規(guī)則
        • f. 默認(rèn)分詞器測試:keyword
        • g. 默認(rèn)分詞器測試:standard
        • h. term 精確查找 text類型
        • i. term 精確查找 keyword 類型
        • j. 對(duì)h和i的測試進(jìn)行 總結(jié)
    • 16. 多個(gè)詞精確拼配
      • a. 添加多數(shù)
      • b. 查看`elasticsearch-head` 的Google插件,查看 `testdb` 索引數(shù)據(jù)和映射規(guī)則。
      • c. term 精確查詢
    • 17. 高亮顯示

前言

  • 首先本文借鑒了 阮一峰老師的博文 和 嗶哩嗶哩上狂神老師 的視頻,在此感謝。
  • 本文使用 kibana操作命令。elasticsearch和kibana都是6.4.2版本
  • elasticsearch學(xué)習(xí)一:了解 ES,版本之間的對(duì)應(yīng)。安裝elasticsearch,kibana,head插件、elasticsearch-ik分詞器。
  • elasticsearch學(xué)習(xí)二:使用springboot整合TransportClient 進(jìn)行搭建elasticsearch服務(wù)
  • elasticsearch學(xué)習(xí)三:elasticsearch-ik分詞器的自定義配置 分詞內(nèi)容
  • elasticsearch學(xué)習(xí)四:使用springboot整合 rest 進(jìn)行搭建elasticsearch服務(wù)
  • elasticsearch學(xué)習(xí)五:springboot整合 rest 操作elasticsearch的 實(shí)際案例操作,編寫搜索的前后端,爬取京東數(shù)據(jù)到elasticsearch中。

一、基本概念

  • 全文搜索 屬于最常見的需求,開源的 Elasticsearch (以下簡稱 Elastic)是目前全文搜索引擎的首選。
  • 它可以快速地儲(chǔ)存、搜索和分析海量數(shù)據(jù)。維基百科、Stack Overflow、Github 都采用它。
  • Elastic 的底層是開源庫 Lucene。但是,你沒法直接用 Lucene,必須自己寫代碼去調(diào)用它的接口。Elastic 是 Lucene 的封裝 ,提供了 REST API 的操作接口,開箱即用。
  • 1. Node節(jié)點(diǎn) 與 Cluster集群

    Elastic 本質(zhì)上是一個(gè)分布式數(shù)據(jù)庫,允許多臺(tái)服務(wù)器協(xié)同工作,每臺(tái)服務(wù)器可以運(yùn)行多個(gè) Elastic 實(shí)例。
    單個(gè) Elastic 實(shí)例稱為一個(gè)節(jié)點(diǎn)(node)。一組節(jié)點(diǎn)構(gòu)成一個(gè)集群(cluster)。

    2. Index 索引

    Elastic 會(huì)索引所有字段,經(jīng)過處理后寫入一個(gè)反向索引(Inverted Index)。查找數(shù)據(jù)的時(shí)候,直接查找該索引。
    所以,Elastic 數(shù)據(jù)管理的頂層單位就叫做 Index(索引)。它是單個(gè)數(shù)據(jù)庫的同義詞。每個(gè) Index (即數(shù)據(jù)庫)的名字必須是小寫。
    下面的命令可以查看當(dāng)前節(jié)點(diǎn)的所有 Index。
    GET /_mapping?pretty=true

    3. Document文檔

    Index 里面單條的記錄稱為 Document(文檔)。許多條 Document 構(gòu)成了一個(gè) Index。
    Document 使用 JSON 格式表示,下面是一個(gè)例子。

    {"user": "張三","title": "工程師","desc": "數(shù)據(jù)庫管理" }

    同一個(gè) Index 里面的 Document,不要求有相同的結(jié)構(gòu)(scheme),但是最好保持相同,這樣有利于提高搜索效率。

    4. Type類型

    Document 可以分組,比如 weather 這個(gè) Index 里面,可以按城市分組(北京和上海),也可以按氣候分組(晴天和雨天)。這種分組就叫做 Type,它是虛擬的邏輯分組,用來過濾 Document。

    不同的 Type 應(yīng)該有相似的結(jié)構(gòu)(schema),舉例來說,id 字段不能在這個(gè)組是字符串,在另一個(gè)組是數(shù)值。這是與關(guān)系型數(shù)據(jù)庫的表的一個(gè)區(qū)別。性質(zhì)完全不同的數(shù)據(jù)(比如products和logs)應(yīng)該存成兩個(gè) Index,而不是一個(gè) Index 里面的兩個(gè) Type(雖然可以做到)。

    下面的命令可以列出每個(gè) Index 所包含的 Type。(和上面截圖一樣)
    GET /_mapping?pretty=true
    根據(jù)規(guī)劃,Elastic 6.x 版只允許每個(gè) Index 包含一個(gè) Type,7.x 版將會(huì)徹底移除 Type。

    5. 邏輯對(duì)比

    上面說的 集群,節(jié)點(diǎn),索引,類型,文檔,分片(底層封裝),映射 是什么呢?

    怎么區(qū)分對(duì)比 非關(guān)系型數(shù)據(jù)庫 elasticsearch 和 關(guān)系型數(shù)據(jù)庫呢,elasticsearch是面向文檔的
    如下:對(duì)關(guān)系型數(shù)據(jù)庫和elasticsearch客觀的對(duì)比!

    關(guān)系數(shù)據(jù)庫非關(guān)系數(shù)據(jù)庫
    數(shù)據(jù)庫 database索引 index
    表 tabletype(7版本徹底被棄用)
    行 rowsdocument
    字段 columnfield

    elasticsearch(集群)中可以包含多個(gè)索引(數(shù)據(jù)庫),每個(gè)索引中可以包含多個(gè)類型(表),每個(gè)類型下又包含多個(gè)文檔(行),每個(gè)文檔中又包含多個(gè)字段(列)。

    6. 物理設(shè)計(jì)

    elasticsearch 在后臺(tái)把每個(gè)索引劃分成多個(gè)分片,每個(gè)分片可以在集群中的不同服務(wù)器間遷移。
    集群的默認(rèn)名稱為 elasticsearch。

    一個(gè)集群至少有一個(gè)節(jié)點(diǎn),而一個(gè)節(jié)點(diǎn)就是一個(gè) elasticsearch 進(jìn)程,節(jié)點(diǎn)可以有多個(gè)索引默認(rèn)的,如果你創(chuàng)建索引,那么索引將會(huì)有5個(gè)分片(primary shard,又稱為主分片)構(gòu)成的,每一個(gè)主分片會(huì)有一個(gè)副本(replica shard,又稱賦值分片)

    索引唄分為多個(gè)分片,沒份分片是一個(gè)Lucene 的索引,所以一個(gè)elasticsearch索引是由多個(gè)Lucene索引組成的。因?yàn)閑lasticsearch使用Lucene作為底層。

    二、ES的命令風(fēng)格

    一種軟件架構(gòu)風(fēng)格,而不是標(biāo)準(zhǔn),只是提供了一組設(shè)計(jì)原理和約束條件,它主要用于客戶端和服務(wù)器交互類的軟件。基于這個(gè)風(fēng)格設(shè)計(jì)的軟件可以更簡潔,更有層次,更易于實(shí)現(xiàn)緩存等機(jī)制。

    基本RESTFUL 命令說明:

    methodurl地址描述
    PUTlocalhost:9200/索引名稱/類型名稱/文檔id創(chuàng)建文檔(指定文檔id)
    POSTlocalhost:9200/索引名稱/類型名稱創(chuàng)建文檔(隨機(jī)文檔id)
    POSTlocalhost:9200/索引名稱/類型名稱/文檔id/_update修改文檔
    DELETElocalhost:9200/索引名稱/類型名稱/文檔id刪除文檔
    GETlocalhost:9200/索引名稱/類型名稱/文檔id查詢文檔通過文檔id
    POSTlocalhost:9200/索引名稱/類型名稱/文檔id/_search查詢所有文檔
  • PUT :一般為創(chuàng)建 索引、類型、文檔
  • POST:添加數(shù)據(jù),創(chuàng)建索引、類型,查詢
  • DELETE:刪除索引、文檔
  • GET:查詢
  • 三、新建和刪除index索引

  • 創(chuàng)建索引index
    PUT /weather
    等價(jià)于
    curl -X PUT 'localhost:9200/weather'
    服務(wù)器返回一個(gè) JSON 對(duì)象,里面的acknowledged字段表示操作成功。
  • 然后,發(fā)出 DELETE 請(qǐng)求,刪除這個(gè) Index。
    DELETE /weather
    等價(jià)于
    curl -X DELETE 'localhost:9200/weather'
  • 四、分詞器使用和學(xué)習(xí)

    elasticsearch的查詢,是通過分詞器先進(jìn)行分詞,然后再使用倒排索引去匹配查詢。

    1. 理論學(xué)習(xí)

    分詞:即把一段中文或者別的劃分為一個(gè)個(gè)的關(guān)鍵詞, 我們?cè)谒阉鲿r(shí)候, elasticsearch 分詞器會(huì)把自己的信息進(jìn)行分詞,會(huì)把數(shù)據(jù)庫中或者索引庫中的數(shù)據(jù)進(jìn)行分詞,然后進(jìn)行一個(gè)匹配操作默認(rèn)的中文分詞是將每字看成一個(gè)詞,比如“我愛馮凡利” 會(huì)被分為“我”,“愛”,“馮”,“凡”,“利”,這顯然是不符合要求的,所以我們需要安裝中文分詞器 ik 來解決這個(gè)問題。

    ES默認(rèn)的分詞是英文分詞,對(duì)中文分詞支持的并不好。如果要使用中文,建議使用ik分詞器!所以我們就需要安裝ik中文分詞。

    IK提供了兩個(gè)分詞算法:ik_smart 和 ik_max_word,其中 ik_mart 為最少切分ik_max_word為最新粒度劃分!一會(huì)我們測試!

    安裝在第一篇博客中已經(jīng)介紹,傳送門:elasticsearch學(xué)習(xí)一:了解 ES,版本之間的對(duì)應(yīng)。安裝elasticsearch,kibana,head插件、elasticsearch-ik分詞器。

    2. 使用kibana測試

  • ik_mart 為最少切分

  • ik_max_word為最新粒度劃分,窮盡詞庫的可能。

  • 輸入超級(jí)喜歡馮安晨java

  • 發(fā)現(xiàn)問題:馮安晨被分開了,
    這種自己需要的詞,需要自己加到我們的分詞器的字典中!

  • ik分詞器增加自己的配置!

  • ik分詞器自定義配置,已經(jīng)單寫了一個(gè)博客:elasticsearch學(xué)習(xí)三:elasticsearch-ik分詞器的自定義配置 分詞內(nèi)容
    設(shè)置完后,再來執(zhí)行:
  • 以后需要自己配置的分詞就可以在自己定義的 dic 文件中進(jìn)行配置即可!
  • 五、數(shù)據(jù)操作

    1. 創(chuàng)建索引

  • 創(chuàng)建索引方式1,單純創(chuàng)建索引
    PUT /索引名
  • 創(chuàng)建索引方式2,創(chuàng)建索引并添加數(shù)據(jù),字段類型系統(tǒng)默認(rèn)給出
    這種方式會(huì)直接創(chuàng)建出索引名、類型、id,還會(huì)添家數(shù)據(jù)PUT /索引名/~類型名~/文檔id {請(qǐng)求體}
  • 案例PUT /test1/type1/1 {"name": "馮安晨","age": 18 } 這樣創(chuàng)建完索引、類型、id后,還添加了一個(gè)數(shù)據(jù)。
  • 創(chuàng)建索引方式3,創(chuàng)建索引并指定字段類型
    創(chuàng)建索引,指定類型名稱,并指定 字段(field)類型PUT /test2 {"mappings": {"type2": {"properties": {"name": {"type": "text"},"age": {"type": "long"},"birthday": {"type": "date"}}}} }
  • 2. 字段類型總結(jié)

    那么上面的 name 這個(gè)字段用不用指定類型呢,畢竟我們關(guān)系型數(shù)據(jù)庫是需要指定類型的!!

    • 字符串類型

      text、keyword

    • 數(shù)值類型

      long、integer、short、byte、double、float、half float、scaled float

    • 日期類型

      date

    • 布爾值類型

      boolean

    • 二進(jìn)制類型

      binary

    • 等等。。。

    3. 查看規(guī)則信息

    也就是獲取看一下上面命令創(chuàng)建的詳細(xì)情況

  • GET 命令
    GET /test1 :查看索引信息
    如果自己的文檔字段沒有指定,那么 ES 會(huì)給我們默認(rèn)配置字段類型!就是上面的 test1 索引,沒有指定字段類型,所以ES 默認(rèn)指定類型。
  • 4. 系統(tǒng)命令

    通過 elasticsearch 命令查看 ES 的各種信息! 通過
    GET _cat/
    可以獲得 ES 的當(dāng)前很多信息!

  • GET _cat/indices/?v:查看 索引情況
  • 其他命令。
  • 5 添加數(shù)據(jù)

    默認(rèn)指定數(shù)據(jù)的類型

    PUT /fenganchen/user/1 {"name": "馮凡利","age": 18,"desc": "一頓操作猛如虎,一看工資2500","tags": ["技術(shù)宅", "溫暖", "直男"] }

    6. 修改數(shù)據(jù)

    a. PUT修改(不推薦)

    像添加一樣,進(jìn)行修改,但是這個(gè)修改類似于覆蓋,如果缺少一個(gè)字段,則消失一個(gè)字段

  • 查看 GET /fenganchen/user/1(下面講)

  • 修改

    PUT /fenganchen/user/1 {"name": "馮凡利123","age": 18,"desc": "一頓操作猛如虎,一看工資2500","tags": ["技術(shù)宅", "溫暖", "直男"] }

    _version 代表被修改的次數(shù)

  • 查看確認(rèn)
    GET /fenganchen/user/1

  • b. _update修改(推薦)

  • 修改
  • POST fenganchen/user/1/_update {"doc": {"name": "馮凡利java"} }


    2. 查看

    7. 刪除

    7. 簡單查詢

  • GET fenganchen/user/1
  • 簡單條件查詢
  • GET /fenganchen/user/_search?q=name:馮凡利 (報(bào)錯(cuò),還未找到原因)GET /fenganchen/user/_search?q=age:18


    8.復(fù)雜查詢

  • 多添加幾個(gè)數(shù)據(jù)
  • PUT /fenganchen/user/2 {"name": "張三","age": 17,"desc": "法外狂徒張三","tags": ["技術(shù)宅", "溫暖", "渣男"] }PUT /fenganchen/user/3 {"name": "李四","age": 30,"desc": "mmp 不知怎么形容了","tags": ["靚女", "旅游", "唱歌"] }
  • query關(guān)鍵字:查詢
    match關(guān)鍵字:匹配,這里的有很多選擇,如:match_all:匹配全部,bool:返回布爾值,exists:是否存在等等。GET fenganchen/user/_search {"query": {"match": {"name": "馮凡利"}} }

  • 3. 再添加一個(gè)數(shù)據(jù),便于查詢測試:

    PUT /fenganchen/user/4 {"name": "馮凡利前端","age": 3,"desc": "一頓操作猛如虎,一看工資2500","tags": ["技術(shù)宅", "溫暖", "直男"] }
  • 再次查詢:如下圖

    hits:包括索引和文檔信息、查詢結(jié)果總數(shù)、查詢出來具體文檔
    max_score:最大分?jǐn)?shù),這是下面數(shù)據(jù)中最大的匹配分?jǐn)?shù)值,也是最合適的
    _score:可以通過它來判斷誰更加符合結(jié)果,每個(gè)數(shù)據(jù)中都有這個(gè)屬性
    _source:數(shù)據(jù)對(duì)象信息關(guān)鍵字。

  • 9 過濾結(jié)果

    不想顯示那么多字段,只想顯示其中的 name 和 desc 字段,可以使用 數(shù)據(jù)對(duì)象信息關(guān)鍵字 :_source 來限定顯示的字段。

    GET fenganchen/user/_search {"query": {"match": {"name": "馮凡利"}},"_source": ["name", "desc"] }


    我們之后使用java操作es,所有的方法和對(duì)象就是這里面的key:這個(gè)key也就是 hits、score等關(guān)鍵字

    10. 排序

    GET fenganchen/user/_search {"query": {"match": {"name": "馮凡利"}},"sort": [{"age": {"order": "asc"}}] }

    11. 分頁查詢

    GET fenganchen/user/_search {"query": {"match": {"name": "馮凡利"}},"sort": [{"age": {"order": "desc"}}],"from": 0,"size": 1 }


    from: 從第幾個(gè)數(shù)據(jù)開始
    size:返回多少條數(shù)據(jù)(單頁面的數(shù)據(jù))

    數(shù)據(jù)下標(biāo)還是從0開始,和學(xué)的所有數(shù)據(jù)結(jié)構(gòu)是一樣的!
    /search/{current}/{pagesize}

    12. 布爾查詢

  • must(and) ,所有的條件都要符合,類似于:where id=1 and name=xxxGET fengfanli/user/_search {"query": {"bool": {"must": [{"match": {"name": "馮凡利"}},{"match": {"age": "18"}}]}} }
  • should(or) ,所有的條件都要符合,類似于:where id=1 orname=xxxGET fenganchen/user/_search {"query": {"bool": {"should": [{"match": {"name": "馮凡利"}},{"match": {"age": "18"}}]}} }
  • ** must_not( not)** ,所有的條件都要符合,類似于:where id != 1GET fenganchen/user/_search {"query": {"bool": {"must_not": [{"match": {"age": 3}}]}} }
  • 13. 過濾器

  • 普通匹配查詢
    包含 馮凡利 字符串的都會(huì)被查找出來GET fenganchen/user/_search {"query": {"bool": {"must": [{"match": {"name": "馮凡利"}}]}} }
  • 加入過濾器,進(jìn)行過濾
    filter 關(guān)鍵字,對(duì)查詢的數(shù)據(jù)進(jìn)行過濾。
    • gt 大于
    • gte 大于等于
    • lt 小于
    • lte 小于等于
    GET fenganchen/user/_search {"query": {"bool": {"must": [{"match": {"name": "馮凡利"}}],"filter": {"range": {"age": {"gt": 3}}}}} } 上面的語句 便是對(duì) 查詢出來的語句 進(jìn)行過濾,過濾出 age 大于3 的數(shù)據(jù)
  • 14. 空格 匹配多個(gè)條件

    match 關(guān)鍵字 空格
    多個(gè)條件,使用空格隔開
    只要瞞住其中一個(gè)結(jié)果就可以查出
    這個(gè)時(shí)候可以通過 _score 分值進(jìn)行基本的判斷
    下面的查詢語句意思:在tags 字段中找到有 男、技術(shù) 的數(shù)據(jù)給查詢出來

    GET fenganchen/user/_search {"query": {"match": {"tags": "男 技術(shù)"}} }

    15. term 精確查詢

    i. term分析

    term 查詢 是直接通過倒排索引指定的詞條進(jìn)程精確的查找的!

    關(guān)于分詞:

    • term :直接查詢 精確的

    • match :會(huì)使用分詞器解析!(先分析文檔,然后再通過分析進(jìn)行查詢!)

    ii. 兩個(gè)類型 text keyword 細(xì)節(jié)分析

    兩個(gè)類型 text keyword 不能被分詞器使用
    text類型 :可以被分詞
    keyword類型 :不可以被分詞

    先創(chuàng)建索引,并指定屬性規(guī)則,如下:

    a. 6版本創(chuàng)建索引,指定規(guī)則

    elasticsearch 6.X 創(chuàng)建索引 必須要指定類型,feng_type 就是索引的類型名稱

    ```json PUT testdb {"mappings": {"feng_type": {"properties": {"name": {"type": "text"},"desc": {"type": "keyword"}}}} } ```

    b. 7版本創(chuàng)建索引,指定規(guī)則

    elasticsearch 7.x 創(chuàng)建索引 不用指定類型,因?yàn)?版本廢棄了類型關(guān)鍵詞(這里不再演示,我這里使用的是 6.4.2 版本。)

    ```json PUT testdb {"mappings": {"properties": {"name": {"type": "text"},"desc": {"type": "keyword"}}} } ```

    c. 添加數(shù)據(jù)

    ```json PUT testdb/feng_type/1 {"name": "馮凡利java name","desc": "馮凡利java desc" }PUT testdb/feng_type/2 {"name": "馮凡利java name","desc": "馮凡利java desc2" } ``` 添加文檔 1


    添加文檔 2

    d. elasticsearch-head 的Google插件,查看 testdb 索引數(shù)據(jù)

    e. elasticsearch-head 的Google插件,查看 testdb 映射規(guī)則

    索引情況,能查看索引的 setting 詳情,和 mapperings 映射規(guī)則 包括類型、屬性情況。
    可以看到,name 屬性 是 text 類型的,desc 是 keyword 類型的。

    f. 默認(rèn)分詞器測試:keyword

    KeywordAnalyzer 把整個(gè)輸入作為一個(gè)單獨(dú)詞匯單元,方便特殊類型的文本進(jìn)行索引和檢索。針對(duì)郵政編碼,地址等文本信息使用關(guān)鍵詞分詞器進(jìn)行索引項(xiàng)建立非常方便。

    使用默認(rèn)的 keyword 分詞器進(jìn)行分詞,(說一下,ik分詞器是中文分詞器)這里看的出來沒有被分析

    g. 默認(rèn)分詞器測試:standard

    英文的處理能力同于StopAnalyzer,支持中文采用的方法為單字切分。他會(huì)將詞匯單元轉(zhuǎn)換成小寫形式,并去除停用詞和標(biāo)點(diǎn)符號(hào)。

    使用默認(rèn)的 standard 分詞器進(jìn)行分詞,,這里看的出來被分析了

    h. term 精確查找 text類型

    i. term 精確查找 keyword 類型


    j. 對(duì)h和i的測試進(jìn)行 總結(jié)

    testdb索引中的 :
    name字段為 text類型,
    desc字段為 keyword類型。

    但是 term 分別對(duì)其 精確查找時(shí),卻發(fā)現(xiàn):

  • 查找text類型的name字段時(shí)時(shí),只要包含就好,也就是text類型可以被分詞器解釋
  • 查找keyword 類型的 desc 字段時(shí),必須全包含才行,也就是keyword類型把整個(gè)輸入作為一個(gè)單獨(dú)詞匯單元 去匹配被分詞器解釋。
  • 16. 多個(gè)詞精確拼配

    a. 添加多數(shù)

    PUT testdb/feng_type/3 {"t1": "22","t2": "2020-4-6" }PUT testdb/feng_type/4 {"t1": "33","t2": "2020-4-7" }


    b. 查看elasticsearch-head 的Google插件,查看 testdb 索引數(shù)據(jù)和映射規(guī)則。

  • 索引數(shù)據(jù)
  • 映射規(guī)則
  • c. term 精確查詢

    17. 高亮顯示

  • 高亮關(guān)鍵字:highlight
  • GET fenganchen/user/_search {"query": {"match": {"name": "馮凡利"}},"highlight": {"fields": {"name": {}}} }

  • 自定義搜索高亮
  • GET fenganchen/user/_search {"query": {"match": {"name": "馮凡利"}},"highlight": {"pre_tags": "<p class='key style='color:red'>","post_tags": "</p>", "fields": {"name": {}}} }

    這些 mysql也可以做,只是mysql效率比較低

    • 匹配
    • 按照條件匹配
    • 精確匹配
    • 區(qū)間范圍匹配
    • 多條件查詢
    • 高亮查詢

    總結(jié)

    以上是生活随笔為你收集整理的elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。