国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

超詳細講解Elasticsearch的基本操作

這篇具有很好參考價值的文章主要介紹了超詳細講解Elasticsearch的基本操作。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

????????????

哈嘍!大家好,我是【一心同學】,一位上進心十足的【Java領域博主】!??????

?【一心同學】的寫作風格:喜歡用【通俗易懂】的文筆去講解每一個知識點,而不喜歡用【高大上】的官方陳述。

?【一心同學】博客的領域是【面向后端技術】的學習,未來會持續(xù)更新更多的【后端技術】以及【學習心得】。

?如果有對【后端技術】感興趣的【小可愛】,歡迎關注一心同學】??????

??????感謝各位大可愛小可愛!???????


目錄

一、Rest風格是什么?

二、索引的基本操作

2.1 創(chuàng)建索引并添加數(shù)據(jù)

2.2 獲取規(guī)則

2.3 指定字段類型

2.4 刪除索引

三、文檔的基本操作

3.1 添加數(shù)據(jù)?

3.2 獲取數(shù)據(jù)?

3.3 更新數(shù)據(jù)

第一種:使用PUT

第二種:Post _update(推薦)

3.4 簡單查詢

四、search查詢操作

4.1? 條件查詢

4.2 模糊查詢

4.3 結果過濾

4.4? 排序

4.5?分頁

4.6 多條件查詢

???must

???should

???must_not(not)

4.7 過濾器

4.8?多條件查詢

?? 環(huán)境準備

?? 查詢

4.9 精確查詢

4.9.1 text與keyword

4.9.2 環(huán)境準備

4.9.3 查詢

4.10 多值匹配精確查詢

4.11 高亮

?? 默認樣式

?? 自定義高亮的樣式

小結


一、Rest風格是什么?

Rest風格是一種軟件架構風格,而不是標準,只是提供了一組設計原則和約束條件。它主要用于客戶端和服務器交互類的軟件。基于這個風格設計的軟件可以更簡潔,更有層次,更易于實現(xiàn)緩存等機制。

基本Rest命令:

method url地址 描述
PUT(創(chuàng)建,修改) localhost:9200/索引名稱/類型名稱/文檔id 創(chuàng)建文檔(指定文檔id)
POST(創(chuàng)建) localhost:9200/索引名稱/類型名稱 創(chuàng)建文檔(隨機文檔id)
POST(修改) localhost:9200/索引名稱/類型名稱/文檔id/_update 修改文檔
DELETE(刪除) localhost:9200/索引名稱/類型名稱/文檔id 刪除文檔
GET(查詢) localhost:9200/索引名稱/類型名稱/文檔id 查詢文檔通過文檔ID
POST(查詢) localhost:9200/索引名稱/類型名稱/文檔id/_search 查詢所有數(shù)據(jù)

二、索引的基本操作

2.1 創(chuàng)建索引并添加數(shù)據(jù)

?語法:

PUT /索引名/類型名/文檔id
{

請求體

}

代碼:

PUT /yixin/user/1
{
  "name":"一心",
  "age":18
}

結果:

超詳細講解Elasticsearch的基本操作

?這樣是創(chuàng)建成功的,但其提示告訴我們type 在未來的版本中會逐漸棄用,因此產(chǎn)生一個默認類型_doc?進行代替。

2.2 獲取規(guī)則

作用:通過 GET 可以請求獲取具體的信息,查看我們的索引信息。

語法

GET 索引名

輸入:

GET yixin

結果:

可以發(fā)現(xiàn)如果我們在創(chuàng)建索引的時候,沒有指定字段類型,那么其會默認給我們的字段賦予類型的。

超詳細講解Elasticsearch的基本操作

2.3 指定字段類型

作用:用來創(chuàng)建規(guī)則,類似于建庫(建立索引和字段對應類型),也可看做規(guī)則的建立。

常用的字段數(shù)據(jù)類型:

類型 屬性
字符串類型

text:支持分詞,全文檢索,支持模糊、精確查詢,不支持聚合,排序操作;text類型的最大支持的字符長度無限制,適合大字段存儲;

keyword:不進行分詞,直接索引、支持模糊、支持精確匹配,支持聚合、排序操作。keyword類型的最大支持的長度為——32766個UTF-8類型的字符,可以通過設置ignore_above指定自持字符長度,超過給定長度后的數(shù)據(jù)將不被索引,無法通過term精確匹配檢索返回結果。

數(shù)值型 long、Integer、short、byte、double、float、half float、scaled float
日期類型 date
布爾類型 boolean
二進制類型 binary

代碼:

PUT /test1
{
  "mappings": {
    "properties": {
      "name":{
        "type": "text"
      },
      "age":{
        "type": "long"
      },
      "birthday":{
        "type": "date"
      }
    }
  }
}

獲取規(guī)則:

超詳細講解Elasticsearch的基本操作

?現(xiàn)在我們只需要根據(jù)對應的類型進行插入數(shù)據(jù)即可:

PUT /test1/_doc/1
{
  "name":"一心",
  "age":18,
  "birthday":"2000-01-01"
}

2.4 刪除索引

語法

DELETE /索引名

輸入

DELETE /test1

注意:如果只是要刪除某一條文檔則是DELETE /test1/_doc/1

三、文檔的基本操作

3.1 添加數(shù)據(jù)?

代碼:

PUT /yixin/user/1
{
  "name":"yixin",
  "age":18
}

查看索引的數(shù)據(jù):

超詳細講解Elasticsearch的基本操作

3.2 獲取數(shù)據(jù)?

代碼:

GET yixin/user/1

結果:

超詳細講解Elasticsearch的基本操作

3.3 更新數(shù)據(jù)

第一種:使用PUT

代碼:

PUT /yixin/user/2
{
  "name":"一心同學",
  "age":18
}

輸出:

分析:“version”代表這個數(shù)據(jù)被改動的次數(shù),每次執(zhí)行PUT,無論是否進行改動,verson值都會增加,而且如果PUT的文檔屬性沒有傳遞值,則會進行覆蓋操作。

超詳細講解Elasticsearch的基本操作

第二種:Post _update(推薦)

代碼:

POST yixin/user/2/_update
{
  "doc":{
    "name":"一心呀"
  }
}

輸出:

分析:“verson”同樣是指變動的次數(shù),如果多次執(zhí)行POST,但不修改,那么verson值不變,而且我們的字段沒有設置值不會進行覆蓋操作,靈活性高!

超詳細講解Elasticsearch的基本操作

3.4 簡單查詢

需求:查詢某條數(shù)據(jù)。

GET yixin/user/1

輸出:

超詳細講解Elasticsearch的基本操作

需求:查詢所有數(shù)據(jù)。

GET yixin/user/_search

輸出:

超詳細講解Elasticsearch的基本操作

四、search查詢操作

4.1? 條件查詢

需求:查詢名字帶有“一心”并且年齡為18歲的用戶。

GET yixin/user/_search?q=name:"一心",age:18

輸出:

超詳細講解Elasticsearch的基本操作

4.2 模糊查詢

關鍵字:match

需求:查詢命中帶有“一心”的用戶。

GET yixin/user/_search
{
  "query": {
    "match": {
      "name": "一心"
    }
  }
}

輸出:

超詳細講解Elasticsearch的基本操作

4.3 結果過濾

關鍵字:source

作用:如果我們不希望展示那么多信息,可以使用_source進行結果過濾。

需求:輸出的字段中,只顯示name。

GET yixin/user/_search
{
  "query": {
    "match": {
      "name": "一心"
    }
  },
  "_source": ["name"]
}

輸出:

超詳細講解Elasticsearch的基本操作

4.4? 排序

關鍵字:sort

  • 降序:desc
  • 升序:asc


需求:匹配帶有“一心”的名字,并且根據(jù)年齡進行降序排列。

GET yixin/user/_search
{
  "query": {
    "match": {
      "name": "一心"
    }
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ]
}

輸出:

超詳細講解Elasticsearch的基本操作

4.5?分頁

關鍵詞
from:從第幾個數(shù)據(jù)開始,下標從0開始。
size:單頁面返回多少條數(shù)據(jù)。

需求:匹配帶有“一心”的名字,并且按年齡進行降序,每一頁只顯示1條數(shù)據(jù),返回第一頁。

GET yixin/user/_search
{
  "query": {
    "match": {
      "name": "一心"
    }
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ],
  "from": 0,
  "size": 1
}

輸出:

超詳細講解Elasticsearch的基本操作

4.6 多條件查詢

關鍵詞
bool:布爾值查詢
must(and):所有的條件都要符合 where id=1 and name = xxx
should(or):所有的條件都要符合 where id=1 or name = xxx
must_not(not):非,不符合的條件

???must


需求:查詢名字帶有“一心”并且年齡為19的用戶。

GET yixin/user/_search
{
  "query": {
   "bool": {
     "must": [
       {
         "match": {
           "name": "一心"
         }
       },
       {
         "match": {
           "age": "19"
         }
       }
     ]
   }
  }
}

輸出:

超詳細講解Elasticsearch的基本操作

???should


需求:查詢名字帶有“一心”或“張”的用戶。

GET yixin/user/_search
{
  "query": {
   "bool": {
     "should": [
       {
         "match": {
           "name": "一心"
         }
       },
       {
         "match": {
           "name": "張"
         }
       }
     ]
   }
  }
}

輸出:

超詳細講解Elasticsearch的基本操作

???must_not(not)

需求:查詢年齡不是18歲的用戶。

GET yixin/user/_search
{
  "query": {
   "bool": {
     "must_not": [
       
       {
         "match": {
           "age": "18"
         }
       }
     ]
   }
  }
}

輸出:

超詳細講解Elasticsearch的基本操作

4.7 過濾器

關鍵字:filter

  • gt 大于
  • gte 大于等于
  • lt 小于
  • lte 小于等于

需求1:查詢年齡小于20歲的用戶,但不能等于18歲。

GET yixin/user/_search
{
  "query": {
   "bool": {
     "must_not": [
       {
         "match": {
           "age": "18"
         }
       }
     ],
     "filter": {
       "range": {
         "age": {
           "lt": 20
         }
       }
     }
   }
  }
}

輸出:

超詳細講解Elasticsearch的基本操作

需求2:查詢年齡為15-20歲之間的用戶。

GET yixin/user/_search
{
  "query": {
   "bool": {

     "filter": {
       "range": {
         "age": {
           "gte": 15,
           "lte": 20
         }
       }
     }
   }
  }
}

輸出:

超詳細講解Elasticsearch的基本操作

4.8?多條件查詢

?? 環(huán)境準備

PUT /yixin2/user/1
{
  "name":"一心同學",
  "age":18,
  "tags":["技術","運動","社交"]
}

PUT /yixin2/user/2
{
  "name":"張三",
  "age":20,
  "tags":["游戲","運動","喝咖啡"]
}

PUT /yixin2/user/3
{
  "name":"李四",
  "age":21,
  "tags":["滑雪","技術"]
}

?? 查詢

需求:查詢標簽擁有“技術”或“運動”的用戶。

GET yixin2/user/_search
{
  "query": {
    "match": {
      "tags": "技術 運動"
    }
  }
}

輸出:

超詳細講解Elasticsearch的基本操作

4.9 精確查詢

關鍵詞:term

term: 精確查詢,對查詢的值不分詞,直接進倒排索引去匹配。
match; 模糊查詢,對查詢的值分詞,對分詞的結果一一進入倒排索引去匹配

4.9.1 text與keyword

text: 在寫入時,對寫入的值進行分詞,然后一一插入到倒排索引。
keyword: 在寫入時,將整個值插入到倒排索引中,不進行分詞。

對keyword進行查詢:

GET _analyze
{
  "analyzer": "keyword",
  "text": "你好,世界"
}

輸出:

可以發(fā)現(xiàn)不會對詞匯進行拆分!

超詳細講解Elasticsearch的基本操作

對普通類型進行查詢:

GET _analyze
{
  "analyzer": "standard",
  "text": "你好,世界"
}

輸出:

超詳細講解Elasticsearch的基本操作

4.9.2 環(huán)境準備

PUT /yixin3
{
  "mappings": {
    "properties": {
      "name":{
        "type": "keyword"
      },
      "age":{
        "type": "long"
      },
      "desc":{
        "type": "text"
      }
    }
  }
}


PUT /yixin3/_doc/1
{
  "name":"一心同學",
  "age":18,
  "desc":"專注于Java"
}

4.9.3 查詢

關鍵字分詞

我們來對“一心同學”進行分詞,由于name屬于 keyword,所以利用keyword進行分詞:

GET _analyze
{
  "analyzer": "keyword",
  "text": "一心同學"
}

輸出:

{
  "tokens" : [
    {
      "token" : "一心同學",
      "start_offset" : 0,
      "end_offset" : 4,
      "type" : "word",
      "position" : 0
    }
  ]
}

也就是說對于精確查詢我們只能查詢“一心同學”才會顯示成功!

非關鍵字分詞

GET _analyze
{
  "analyzer": "standard",
  "text": "專注于java"
}

輸出:

{
  "tokens" : [
    {
      "token" : "專",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "<IDEOGRAPHIC>",
      "position" : 0
    },
    {
      "token" : "注",
      "start_offset" : 1,
      "end_offset" : 2,
      "type" : "<IDEOGRAPHIC>",
      "position" : 1
    },
    {
      "token" : "于",
      "start_offset" : 2,
      "end_offset" : 3,
      "type" : "<IDEOGRAPHIC>",
      "position" : 2
    },
    {
      "token" : "java",
      "start_offset" : 3,
      "end_offset" : 7,
      "type" : "<ALPHANUM>",
      "position" : 3
    }
  ]
}

也就是說,對于精確查詢,我們只要輸入與分詞后的任意詞匯就可以查詢成功!

???查詢成功:

GET yixin3/_search
{
  "query": {
    "term": {
      "name":"一心同學"
    }
  }
}

???查詢成功:

GET yixin3/_search
{
  "query": {
    "term": {
      "desc":"專"
    }
  }
}

???查詢成功:

GET yixin3/_search
{
  "query": {
    "term": {
      "desc":"java"
    }
  }
}

??查詢失?。?/strong>

GET yixin3/_search
{
  "query": {
    "term": {
      "name":"一心"
    }
  }
}

??查詢失?。?/strong>

GET yixin3/_search
{
  "query": {
    "term": {
      "desc":"專注于Java"
    }
  }
}

分析可得:

查詢類型 寫入類型 結果
term text
term keyword
match text
match keyword

4.10 多值匹配精確查詢

需求:查詢名字為“張三”和“一心同學”的用戶。

GET yixin3/_search
{
  "query": {
    "bool": {
      "should": [
        
        {
          "term": {
            "name": "張三"
          }
        },{
          "term": {
            "name": "一心同學"
          }
        }
      ]
    }
  }
}

輸出:

超詳細講解Elasticsearch的基本操作

4.11 高亮

關鍵詞:highlight

?? 默認樣式

需求:讓搜索詞匯高亮顯示。

GET yixin/_search
{
  "query": {
    "match": {
      "name": "一心"
    }
  },
  "highlight": {
    "fields": {
      "name": {}
    }
  }
}

輸出:

超詳細講解Elasticsearch的基本操作

?? 自定義高亮的樣式

pre_tags:前綴
post_tags:后綴

代碼:

GET yixin/_search
{
  "query": {
    "match": {
      "name": "一心"
    }
  },
  "highlight": {
    "pre_tags": "<p class='key' style='color:red'>", 
    "post_tags": "</p>", 
    "fields": {
      "name": {}
    }
  }
}

輸出:

超詳細講解Elasticsearch的基本操作


小結

以上就是【一心同學】整理的關于【ElasticSearch的基本操作】,對于以上的知識點非常重要,大家務必要【掌握】,建議跟著【一心同學】的思路自己動手敲一遍,相信會掌握得【更快】!

如果這篇【文章】有幫助到你,希望可以給【一心同學】點個??,創(chuàng)作不易,相比官方的陳述,我更喜歡用【通俗易懂】的文筆去講解每一個知識點,如果有對【后端技術】感興趣的小可愛,也歡迎關注???????【一心同學】??????,我將會給你帶來巨大的【收獲與驚喜】????!文章來源地址http://www.zghlxwxcb.cn/news/detail-438487.html

到了這里,關于超詳細講解Elasticsearch的基本操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • ElasticSearch - 基本操作

    ElasticSearch - 基本操作

    本文記錄 ES 的一些基本操作,就是對官方文檔的一些整理,按自己的習慣重新排版,湊合著看。官方的更詳細,建議看官方的。 下文以 books 為索引名舉例。 添加單個文檔 (沒有索引會自動創(chuàng)建) 不指定 id,會隨機生成,如果需要指定 id,使用 POST books/_doc/id 還可以使用 put 的

    2024年03月20日
    瀏覽(26)
  • ElasticSearch8 - 基本操作

    ElasticSearch8 - 基本操作

    本文記錄 ES 的一些基本操作,就是對官方文檔的一些整理,按自己的習慣重新排版,湊合著看。官方的更詳細,建議看官方的。 下文以 books 為索引名舉例。 添加單個文檔 (沒有索引會自動創(chuàng)建) 不指定 id,會隨機生成,如果需要指定 id,使用 POST books/_doc/id 還可以使用 put 的

    2024年04月09日
    瀏覽(27)
  • ElasticSearch基本api操作

    ElasticSearch基本api操作

    本文章下列所用es本意都為Elaticsearch Elaticsearch ,簡稱為es, es是一 個開源的高擴展的分布式全文檢索引擎,它可以近乎實時的存儲、檢索數(shù)據(jù);本身擴展性很好, 可以擴展到上百臺服務器,處理PB級別(大數(shù)據(jù)時代)的數(shù)據(jù)。es也使用Java開發(fā)并使用Lucene作為其核心來實現(xiàn)所有索弓和搜

    2024年02月05日
    瀏覽(24)
  • Elasticsearch(四)——ES基本操作

    Elasticsearch(四)——ES基本操作

    一、Rest風格說明( 非常重要 ) Rest風格一種軟件架構風格,而不是標準,只是提供了一組設計原則和約束條件。 它主要用于客戶端和服務器交互類的軟件?;谶@個風格設計的軟件可以更簡潔,更有層次,更易于實現(xiàn)緩存等機制。 基于Rest命令說明 method url地址 描述 PUT localh

    2024年02月02日
    瀏覽(59)
  • elasticsearch基本操作之--QueryBuilders

    elasticsearch基本操作之--QueryBuilders

    使用QueryBuilders進行范圍時間組合查詢 es存儲日志 是按照UTC時間格式存放,以@timestamp 作為時間范圍查詢條件,即from(Date1) to(Date2)Date1、Date2入?yún)⒈仨毷菢藴实膗tc格式; 數(shù)字

    2024年02月13日
    瀏覽(13)
  • Elasticsearch的基本操作與管理

    Elasticsearch是一個基于分布式搜索和分析引擎,由Netflix開發(fā),后被Elasticsearch公司繼承。它是一個實時、可擴展、高性能的搜索引擎,可以處理大量數(shù)據(jù)并提供快速、準確的搜索結果。Elasticsearch使用Lucene庫作為底層搜索引擎,并提供RESTful API和JSON格式進行數(shù)據(jù)交互。 Elasticsea

    2024年02月20日
    瀏覽(22)
  • ElasticSearch 8.11 基本操作練習

    ES 8.0 默認把type給去掉了 新增/編輯 PUT /index/id? 冪等操作 必須指定id 同一個id為修改 POST /index/id 非冪等操作 指定id時和put操作一樣 不指定id 每次都會新增 id為系統(tǒng)隨機分配 刪除 DELETE /index? 刪除整個索引 DELETE /index/_doc/id? 刪除指定document? 查詢? GET /index/_search? 不帶條件查

    2024年02月04日
    瀏覽(17)
  • ElasticSearch Java API 基本操作

    ElasticSearch Java API是ES官方在8.x版本推出的新java api,也可以適用于7.17.x版本的es。 本文主要參考了相關博文,自己手動編寫了下相關操作代碼,包括更新mappings等操作的java代碼。 代碼示例已上傳github。 elasticsearch 版本: 7.17.9 ,修改 /elasticsearch-7.17.9/config/elasticsearch.yml ,新增

    2024年02月08日
    瀏覽(22)
  • Elasticsearch 實戰(zhàn)之三:ES 基本操作

    Elasticsearch 實戰(zhàn)之三:ES 基本操作

    目錄 0. 數(shù)據(jù)格式說明 1. ES的基本操作 1.1?索引操作 1.1.1?建立索引 1.1.2? 刪除索引 1.1.3??查詢索引 1.2 映射操作 1.2.1 建立映射 1.2.2 查詢映射 1.3 基本操作-CRUD 1.3.1 新增和替換文檔 1.3.2 查詢文檔 在實戰(zhàn)開始之前,為了便于書寫和溝通,本文先來約定一下如何在文章中表達請求

    2024年02月11日
    瀏覽(20)
  • Elasticsearch 7.x 基本操作 (CRUD)

    Elasticsearch 7.x 基本操作 (CRUD)

    Elasticsearch 是一個流行的開源搜索引擎,用于存儲、搜索和分析數(shù)據(jù)。下面是 Elasticsearch 7.x 版本的基本操作(CRUD): 1、創(chuàng)建索引: 2、查看索引: 3、刪除索引: 4、創(chuàng)建文檔: 5、獲取文檔: 6、更新文檔: 7、刪除文檔: 這些操作可以通過 Elasticsearch 的 REST API 進行。注意

    2024年02月15日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包