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

ElasticSearch - 基本操作

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

前言

本文記錄 ES 的一些基本操作,就是對官方文檔的一些整理,按自己的習慣重新排版,湊合著看。官方的更詳細,建議看官方的。

下文以 books 為索引名舉例。

新增

添加單個文檔 (沒有索引會自動創(chuàng)建)

POST books/_doc
{"name": "Snow Crash", "author": "Neal Stephenson", "release_date": "1992-06-01", "age": 18}

不指定 id,會隨機生成,如果需要指定 id,使用 POST books/_doc/id

還可以使用 put 的方式新增,例入 POST books/_doc/id,這種方式必須帶 id,否則會報錯

以上兩種方式,如果帶上了 id,就是不存在就插入,存在舊更新

更新

總結 (有三種方式):

  • POST 更新
    • 如果 URL 帶 _update,更新前會對比新舊數(shù)據(jù),如果新舊數(shù)據(jù)完全相同,將不會進行任何操作 noop,不會影響序列號、版本號信息。
    • 如果 URI 不帶 _update,不會檢查原數(shù)據(jù),都會顯示 updated
  • PUT 更新
    • 路徑?jīng)]法帶 _update,每次都會更新顯示 updated

例如有原數(shù)據(jù)

{
	"name": "zhangsan",
	"age": 18
}

POST 訪問:(路徑帶_update)

需要在參數(shù)外套一層 doc,這種方式不影響其他字段

POST /books/_update/1
{
    "doc": {
        "name": "lisi"
    }
}

// 執(zhí)行之后原數(shù)據(jù)變成
{
	"name": "lisi",
	"age": 18
}

POST 訪問:(路徑不帶_update)

和帶 id 新增的語法是一樣的,不存在就是插入,存在就是更新。這種方式會清空其他字段

POST /books/_doc/1
{
    "name": "lisi"
}

// 執(zhí)行之后原數(shù)據(jù)變成
{
	"name": "lisi"
}

PUT 訪問:(路徑不能帶_update)

效果同第 2 點

PUT /books/_doc/1
{
    "name": "lisi"
}

刪除

DELETE /books/_doc/1

POST /books/_delete_by_query
{查詢條件...}

搜索

官方實例數(shù)據(jù):account. json

使用 [Bulk API](Bulk API | Elasticsearch Guide [8.12] | Elastic) 來批量插入,沒有安裝 kibana 也可以用 postman 導入

ElasticSearch - 基本操作

如果插入記錄搜索不到,可能是索引未來得及刷新,可以手動觸發(fā)

POST /article/_refresh

根據(jù) id 獲取文檔

// 獲取帶元數(shù)據(jù)的
GET /bank/_doc/1
// 獲取不帶元數(shù)據(jù)的
GET /bank/_source/1
// 判斷文檔是否存在
HEAD /bank/_doc/1

使用 HEAD 只會返回 {} 空對象,可以根據(jù)請求是否 404 判斷文檔是否存在

_search 命令搜索

注意:如果你用 es-client 連接的 es,請將 GET 換成 POST,否則查詢無效

原因是 GET 請求沒有帶上 body 參數(shù)

默認只會返回最先匹配到的 10 條文檔

GET /bank/_search

返回結果:

took:檢索花費時間,單位毫秒(從節(jié)點收到查詢到將數(shù)據(jù)返回客戶端之前)

timed_out: 布爾類型,檢索是否超時

hits: 命中的記錄

total.value: 總記錄的數(shù)量

hits.total: 所有命中的記錄

搜索全部

GET /bank/_search
{
    "query": {
        "match_all": {}
    }
}

排序

Sort search results | Elasticsearch Guide [8.12] | Elastic

GET /bank/_search
{
    "sort": [
        {
            "account_number": "desc"
        },
        {
            "balance": { // 兩種寫法都行
                "order": "asc"
            }
        }
    ]
}

sort :排序條件,先對 account_number 降序,如果 account_number 相同,再對 balance 升序

其他排序參數(shù)

GET /bank/_search
{
    "sort": [
        {
            "arr": {
                "order": "desc", // 排序
                "mode": "min", // 排序模式
                "missing": "_last" // 缺失值處理
            }
        }
    ]
}

排序模式

用于對數(shù)組或多值字段排序。比如有數(shù)據(jù)如下

{
    "age": 25,
    "arr": [
        11000,
        23234
    ]
}

arr 字段就是多值字段。

升序排序的默認排序模式是?min 。默認的降序排序模式是?max

mode 說明
min 選擇最低值
max 選擇最高值
sum 總和作為排序值
avg 平均值作為排序值
median 中位數(shù)作為排序值

缺失值處理

顧名思義,就是排序時,沒有該字段的文檔排前面還是排后面。

missing?值可以設置為?_last?、?_first,默認為?_last

分頁

Paginate search results | Elasticsearch Guide [8.12] | Elastic

查詢方式 數(shù)據(jù)量 實時查詢 排序 跳頁 適用場景
form+size 淺分頁 支持 支持 支持 實時查詢,跳頁查詢
scroll 標準方式 不支持 支持 不支持 深度分頁,有序的批量查詢
scroll_scan 滾動掃描 不支持 不支持 不支持 深度分頁,無需的批量查詢
search_after 分頁 支持 支持 不支持 深度分頁,數(shù)據(jù)批量導出

from + size

默認返回前 10 個結果??梢允褂?from 和 size 參數(shù),from 定義要跳過的命中數(shù),默認 0,size 是返回的最大命中數(shù)。類比 mysql 中的 limit 0,10

默認情況下,無法使用?from?和?size?來翻閱超過 10,000 個匹配項。也就是前 10000 條數(shù)據(jù)可以用這種方式分頁。如果數(shù)據(jù)太多,請使用search_after

GET /bank/_search
{
    "from": 0,
    "size": 10
}

search_after

注意:搜索必須指定排序字段,否則獲取不到 search_after 需要的參數(shù)。

使用步驟:
一、第一頁不需要使用 search_after

// 查詢
GET /bank/_search
{
    "sort": [ // 必須指定排序字段
        "account_number",
        "age"
    ]
}

// 響應
{
    ...
    "hits": {
        ...
        "hits": [
            {
                ...
                "sort": [ 0, 29]
            }
        ]
    }
}

第二頁的搜索,就帶上前一頁的 hits.sort 中的參數(shù)

GET /bank/_search
{
	"search_after": [0, 29],
    "sort": [ // 必須指定排序字段
        "account_number",
        "age"
    ]
}

TODO PIT

A 查詢數(shù)據(jù),B 同時在插入數(shù)據(jù),為了解決 A 兩次查詢的數(shù)據(jù)不一致,可以使用 point int time

檢索選定的字段

Retrieve selected fields from a search | Elasticsearch Guide [8.12] | Elastic

關鍵詞 fields,可以指定返回字段和格式

搜索 API

Query DSL | Elasticsearch Guide [8.12] | Elastic

Search API | Elasticsearch Guide [8.12] | Elastic

query 和 filter

query 就是普通的查詢,會計算分數(shù)。

filter 不會計算分數(shù),es 還會自動緩存常用的過濾器提高性能

說明:Query and filter context | Elasticsearch Guide [8.12] | Elastic

用法:Boolean query | Elasticsearch Guide [8.12] | Elastic

復合查詢

Compound queries | Elasticsearch Guide [8.12] | Elastic

全文查詢

intervals 文本靈活查詢

Intervals query | Elasticsearch Guide [8.12] | Elastic

允許用戶精確控制查詢詞在文檔中出現(xiàn)的先后關系,實現(xiàn)了對 terms 順序、terms 之間的距離以及它們之間的包含關系的靈活控制

match 模糊查詢

Match query | Elasticsearch Guide [8.12] | Elastic

對基本類型,是精確匹配(比如 long、日期等)。對字符串是模糊查詢,對查詢的值分詞,對分詞的結果一一進入倒排索引去匹配

GET /ft/_search
{
    "query": {
        "match" : {
            "my_text":{
                "query": "my when",
                "operator": "or"
            }
        }
    }
}

解釋:查找 my_text 字段中包含 my 或者 when 的文檔。

query: 需要查詢的內容

operator:默認是 or,如果改成 and,就需要 my_text 中同時包含 when 和 my

analyzer:分詞器,默認使用字段的分詞器

prefix 前綴查詢

GET /ft/_search
{
    "query": {
        "prefix": {
            "my_text": {
                "value": "favo"
            }
        }
    }
}

匹配 my_text 中以 favo 開頭的,注意是不能分詞的,也就是 my fa 查不到 cold my favourite food,但是用 favo 可以找到

match_bool_prefix 分詞前綴查詢

prefix 不能分詞,那么 match_bool_prefix 就來了

GET /ft/_search
{
    "query": {
        "match_bool_prefix": {
            "my_text": {
                "query": "quick brown f"
            }
        }
    }
}

解釋:先分詞,最后一個詞按前綴處理,前面的詞語直接匹配,只要有一個命中就可以

匹配 quick brown foxtwo quick brown ferretsthe fox is quick and brown

match_phrase 短語匹配查詢

顧名思義,match 會分詞,match_phrase 不會分詞

GET /ft/_search
{
    "query": {
        "match_phrase": {
            "my_text": {
                "query": "wo shi"
            }
        }
    }
}

match_phrase_prefix 短語前綴匹配查詢

GET /ft/_search
{
  "query": {
    "match_phrase_prefix": {
      "my_text": {
        "query": "quick brown f"
      }
    }
  }
}

與 match_bool_prefix 的區(qū)別就是不分詞,匹配 quick brown foxtwo quick brown ferrets,不匹配 the fox is quick and brown

combined_fields 組合多字段查詢

Combined fields | Elasticsearch Guide [8.12] | Elastic

這個有點不太理解。

GET /ft/_search
{
    "query": {
        "combined_fields": {
            "query": "ren shui",
            "fields": [
                "title",
                "my_text"
            ],
            "operator": "and"
        }
    }
}

解釋:效果類似于將 title 和 my_text 兩個字段合并成一個,再執(zhí)行查詢

注意,我把 operator 改成 and 了,但是只要 title 和 my_text 組合起來,包含了 ren 和 shui 就能命中

multi_match 多字段查詢

Multi-match query | Elasticsearch Guide [8.12] | Elastic

在 match 查詢的基礎上,允許多字段查詢

GET /ft/_search
{
    "query": {
        "multi_match": {
            "query": "ren shui",
            "fields": [
                "title",
                "my_text"
            ],
            "operator": "and"
        }
    }
}

解釋:我把 operator 改成了 and,那么需要 title 同時包含 ren 和 shui 兩個詞,或者 my_text 同時包含兩個詞,才能命中。和 combined_fields 有區(qū)別的。

總結

沒啥好總結的,吐槽一句,官方文檔對新手不太友好。新手需要的是快速使用,怎么調 api

參考

【ElasticSearch(四)】PUT&POST更新數(shù)據(jù)、DELETE刪除數(shù)據(jù)、_bulk批量操作 - musecho - 博客園 (cnblogs.com)文章來源地址http://www.zghlxwxcb.cn/news/detail-841860.html

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

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

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

相關文章

  • (圖解)循環(huán)隊列的三種判斷隊空、隊滿操作(附帶源碼和插入刪除操作等一些基本操作)

    (圖解)循環(huán)隊列的三種判斷隊空、隊滿操作(附帶源碼和插入刪除操作等一些基本操作)

    目錄 ? 一、普通的順序存儲隊列 二、循環(huán)隊列 (1)少用一個元素空間 i、初始化隊列操作: iii、入隊操作: iv、出隊操作: (2)設置flag標志 i、初始化隊列操作: ii、判斷隊空操作: iii、入隊操作: iv、出隊操作: (3)設置length存儲隊列元素的個數(shù) i、初始化隊列操作

    2024年01月17日
    瀏覽(22)
  • Elasticsearch基本操作之文檔操作

    Elasticsearch基本操作之文檔操作

    本文來說下Elasticsearch基本操作之文檔操作 文檔概述 在創(chuàng)建好索引的基礎上來創(chuàng)建文檔,并添加數(shù)據(jù)。 這里的文檔可以類比為關系型數(shù)據(jù)庫中的表數(shù)據(jù),添加的數(shù)據(jù)格式為 JSON 格式。 在 apifox 中,向 ES 服務器發(fā) POST 請求 :http://localhost:9200/person/_doc,請求體內容為: 服務器響

    2024年02月01日
    瀏覽(21)
  • ElasticSearch - 基本操作

    ElasticSearch - 基本操作

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

    2024年03月20日
    瀏覽(26)
  • 【MySQL】記錄的基本操作

    【MySQL】記錄的基本操作

    為表中所有字段插入數(shù)據(jù) 基本語法 INSERT INTO 表名(字段名1,字段名2,…) VALUES (值 1,值 2,…); 示例 為表中指定字段插入數(shù)據(jù) 基本語法 INSERT INTO 表名(字段名1,字段名2,…) VALUES (值 1,值 2,…); 示例 同時插入多條數(shù)據(jù) 基本語法 INSERT INTO 表名 [(字段名1,字段名2,…)]VALUES (值 1,值

    2024年02月08日
    瀏覽(16)
  • 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)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包