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

【ES筆記02】ElasticSearch數(shù)據(jù)庫之查詢操作(match、must、must_not、should、_source、filter、range、exists、ids、term、terms)

這篇具有很好參考價(jià)值的文章主要介紹了【ES筆記02】ElasticSearch數(shù)據(jù)庫之查詢操作(match、must、must_not、should、_source、filter、range、exists、ids、term、terms)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

這篇文章,主要介紹ElasticSearch數(shù)據(jù)庫之查詢操作(match、must、must_not、should、_source、filter、range、exists、ids、term、terms)。

目錄

一、布爾查詢

1.1、主鍵查詢

1.2、兩種查詢方式

(1)路徑參數(shù)查詢

(2)請求體參數(shù)查詢

1.3、match查詢

(1)match

(2)match_all

1.4、過濾字段

1.5、布爾查詢(must)

1.6、布爾查詢(should)

1.7、布爾查詢(must_not)

二、filter過濾查詢

2.1、range范圍查詢

2.2、exists是否存在

2.3、ids過濾查詢

2.4、term關(guān)鍵詞查詢

2.5、terms多關(guān)鍵詞查詢


一、布爾查詢

1.1、主鍵查詢

# 主鍵查詢
GET /索引名稱/_doc/doc文檔的id

# 測試案例
GET /idx_20221124/_doc/2022001

這種查詢方式,每一次只能夠查詢一條doc文檔,如果要查詢很多doc文檔,那么就需要通過【_search】命令。

1.2、兩種查詢方式

(1)路徑參數(shù)查詢

將查詢條件放在請求路徑后面,查詢條件使用【q=字段名稱:字段值】這種格式,如下所示:

# 單個(gè)查詢條件
# 查詢age字段等于20的doc文檔
GET /idx_20221124/_search?q=age:20

(2)請求體參數(shù)查詢

當(dāng)查詢條件有很多個(gè)的時(shí)候,如果將所有的查詢條件都放在請求路徑上面,顯然不合適,所以ES可以將查詢條件放到請求體里面,請求體里面的查詢條件需要按照指定的格式,不然ES會(huì)解析報(bào)錯(cuò)。

# 
# 查詢
GET /idx_20221124/_search
{
  "query": {
    "指定查詢類型": {
      "查詢字段": "查詢值"
    }
  }
}

# 查詢
GET /idx_20221124/_search
{
  "query": {
    "match": {
      "age": 20
    }
  }
}

1.3、match查詢

match關(guān)鍵字,相當(dāng)于mysql數(shù)據(jù)庫中的like查詢,match查詢的字段如果是text類型,那么text會(huì)被分詞,match就會(huì)匹配分詞,查詢所有包含分詞的doc文檔,如果不是text類型的,那就是精確查詢。

match有多種形式,如下所示:

  • match:查詢指定條件的數(shù)據(jù),match會(huì)將查詢的條件進(jìn)行分詞操作,然后只有doc文檔中包含分詞,就都會(huì)查詢出來。
  • match_all:查詢所有數(shù)據(jù)。
  • match_phrase:匹配短語,match是會(huì)查詢所有包含分詞的doc文檔,而match_phrase則是匹配整個(gè)短語,才會(huì)返回對應(yīng)的doc文檔。
  • match_phrase_prefix:匹配短語的前綴部分,這個(gè)只能使用在text類型字段。

(1)match

# 查詢所有數(shù)據(jù)
# 查詢age等于20的doc文檔
GET /idx_20221124/_search
{
  "query": {
    "match": {
      "age": 20
    }
  }
}

(2)match_all

match_all表示查詢所有的數(shù)據(jù),默認(rèn)是10條,因?yàn)镋S默認(rèn)分頁是10條數(shù)據(jù),這個(gè)關(guān)鍵字不能寫查詢條件。

# 查詢所有數(shù)據(jù)
GET /idx_20221124/_search
{
  "query": {
    "match_all": {}
  }
}

執(zhí)行結(jié)果:

【ES筆記02】ElasticSearch數(shù)據(jù)庫之查詢操作(match、must、must_not、should、_source、filter、range、exists、ids、term、terms)

1.4、過濾字段

ES查詢時(shí)候,默認(rèn)情況下,會(huì)將doc文檔中的所有字段都返回,如果查詢時(shí)候不想查詢某個(gè)字段,那么可以使用【_source】屬性設(shè)置查詢哪些字段。【_source】就相當(dāng)于mysql數(shù)據(jù)庫中的【select 字段1,字段2】形式。

【_source】過濾字段:

  • 第一種:_source=false,表示所有字段都不返回。
  • 第二種:_source: ["username", "age"],只返回指定的字段。

案例代碼:

# 查詢數(shù)據(jù),不返回字段
GET /idx_20221124/_search
{
  "query": {
    "match": {
      "age": 20
    }
  },
  "_source": false
}

# 查詢數(shù)據(jù),返回指定字段
GET /idx_20221124/_search
{
  "query": {
    "match": {
      "age": 20
    }
  },
  "_source": ["username", "age"]
}

執(zhí)行結(jié)果:

【ES筆記02】ElasticSearch數(shù)據(jù)庫之查詢操作(match、must、must_not、should、_source、filter、range、exists、ids、term、terms)

1.5、布爾查詢(must)

條件查詢,和mysql數(shù)據(jù)庫中的條件查詢是類似的,只不過ES中使用JSON的方式來組織查詢條件,條件查詢基本格式如下所示:

# 條件查詢數(shù)據(jù)
GET /索引名稱/_search
{
  "query": {
    "bool": {
      "條件類型": [
        {條件1},
        {條件2}
      ]
    }
  }
}

條件查詢中的【must】和mysql數(shù)據(jù)庫中的【and】是相同作用,【must】接收一個(gè)數(shù)組,數(shù)組中的所有條件都成立,這個(gè)時(shí)候才會(huì)查詢對應(yīng)數(shù)據(jù)。

# 查詢數(shù)據(jù)
GET /idx_20221124/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "nickname": "java"
          }
        },
        {
          "match": {
            "age": 25
          }
        }
      ]
    }
  }
}

執(zhí)行結(jié)果:

【ES筆記02】ElasticSearch數(shù)據(jù)庫之查詢操作(match、must、must_not、should、_source、filter、range、exists、ids、term、terms)

1.6、布爾查詢(should)

既然有and運(yùn)算,那當(dāng)然少不了or運(yùn)算,ES中使用【should】表示或運(yùn)算,相當(dāng)于mysql數(shù)據(jù)庫中的【or】連接符。

# 查詢數(shù)據(jù)
GET /idx_20221124/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "nickname": "java"
          }
        },
        {
          "match": {
            "age": 31
          }
        }
      ]
    }
  }
}

執(zhí)行結(jié)果:

【ES筆記02】ElasticSearch數(shù)據(jù)庫之查詢操作(match、must、must_not、should、_source、filter、range、exists、ids、term、terms)

1.7、布爾查詢(must_not)

must_not是非運(yùn)算,相當(dāng)于mysql數(shù)據(jù)庫中的【!】非運(yùn)算,即:【not】。

# 查詢數(shù)據(jù)
# 查詢年齡不是25的所有doc文檔
GET /idx_20221124/_search
{
  "query": {
    "bool": {
      "must_not": [
        {
          "match": {
            "age": 25
          }
        }
      ]
    }
  }
}

執(zhí)行結(jié)果:

【ES筆記02】ElasticSearch數(shù)據(jù)庫之查詢操作(match、must、must_not、should、_source、filter、range、exists、ids、term、terms)

二、filter過濾查詢

2.1、range范圍查詢

filter是用于過濾查詢的關(guān)鍵字,在filter里面可以使用多種查詢條件,例如:range、term、terms、exists、ids幾種常見的查詢,這里先介紹range范圍查詢,范圍查詢首先需要指定范圍,下面是幾個(gè)常見的范圍關(guān)鍵字。

range范圍關(guān)鍵字:

  • gt:大于。
  • lt:小于。
  • gte:大于等于。
  • lte:小于等于。
  • eq:等于。
  • ne:不等于。

range范圍查詢的語句格式:

# 查詢數(shù)據(jù)
GET /索引名稱/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "指定字段": {
              "條件": 范圍值,
              "條件": 范圍值
            }
          }
        }
      ]
    }
  }
}

具體案例代碼:

# 查詢數(shù)據(jù)
GET /idx_20221124/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "age": {
              "gt": 20,
              "lt": 30
            }
          }
        }
      ]
    }
  }
}

執(zhí)行結(jié)果:

【ES筆記02】ElasticSearch數(shù)據(jù)庫之查詢操作(match、must、must_not、should、_source、filter、range、exists、ids、term、terms)

2.2、exists是否存在

exists關(guān)鍵字,是表示指定的字段的值是否存在,類似于mysql數(shù)據(jù)庫中的【is null】,但是ES中exists用在filter里面時(shí)候,表示過濾掉不存在指定字段的doc文檔。

# 查詢數(shù)據(jù)
# 過濾nickname不存在的doc文檔數(shù)據(jù)
GET /idx_20221124/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "exists": {
            "field": "nickname"
          }
        }
      ]
    }
  }
}

運(yùn)行上面語句之后,會(huì)返回所有doc文檔中,nickname字段不存在的doc文檔結(jié)果。

注意:exists會(huì)返回指定字段存在的doc文檔,只有當(dāng)字段等于null,即:不存在時(shí)候才會(huì)匹配成功,如果字段等于空字符串不會(huì)匹配成功。

2.3、ids過濾查詢

ids查詢,這就相當(dāng)于mysql數(shù)據(jù)庫中的【in】條件查詢,多個(gè)條件值查詢,但是這里的只能夠?qū)?span style="color:#fe2c24;">doc文檔的id進(jìn)行多個(gè)值查詢。

# 查詢數(shù)據(jù)
# 查詢doc文檔id等于:2022001、2022005的數(shù)據(jù)
GET /idx_20221124/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "ids": {
            "values": [
              "2022001", "2022005"
            ]
          }
        }
      ]
    }
  }
}

執(zhí)行結(jié)果:

【ES筆記02】ElasticSearch數(shù)據(jù)庫之查詢操作(match、must、must_not、should、_source、filter、range、exists、ids、term、terms)

2.4、term關(guān)鍵詞查詢

term表示關(guān)鍵字查詢,即:判斷doc文檔里面是否包含給定的term關(guān)鍵字,如果包含,則滿足條件,否則不滿足。

# 查詢數(shù)據(jù)
GET /索引名稱/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "字段名稱": "字段值"
          }
        }
      ]
    }
  }
}

# 測試案例
GET /idx_20221124/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "username": "java"
          }
        }
      ]
    }
  }
}

執(zhí)行結(jié)果:

【ES筆記02】ElasticSearch數(shù)據(jù)庫之查詢操作(match、must、must_not、should、_source、filter、range、exists、ids、term、terms)

2.5、terms多關(guān)鍵詞查詢

term每次只能夠匹配一個(gè)關(guān)鍵字,而terms則允許多個(gè)關(guān)鍵字匹配。

# 查詢數(shù)據(jù)
GET /idx_20221124/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "terms": {
            "字段名稱": [
              "字段值1",
              "字段值2",
              "字段值n"
            ]
          }
        }
      ]
    }
  }
}

# 測試案例
GET /idx_20221124/_search
{
  "query": {
    "bool": {
      "filter": [
        {
          "terms": {
            "username": [
              "java",
              "python"
            ]
          }
        }
      ]
    }
  }
}

執(zhí)行結(jié)果:

【ES筆記02】ElasticSearch數(shù)據(jù)庫之查詢操作(match、must、must_not、should、_source、filter、range、exists、ids、term、terms)

到此,ES中的一些基本查詢操作就介紹完啦。

綜上,這篇文章結(jié)束了,主要介紹ElasticSearch數(shù)據(jù)庫之查詢操作(match、must、must_not、should、_source、filter、range、exists、ids、term、terms)。文章來源地址http://www.zghlxwxcb.cn/news/detail-407634.html

到了這里,關(guān)于【ES筆記02】ElasticSearch數(shù)據(jù)庫之查詢操作(match、must、must_not、should、_source、filter、range、exists、ids、term、terms)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【ES數(shù)據(jù)庫】Elasticsearch安裝使用

    【ES數(shù)據(jù)庫】Elasticsearch安裝使用

    Elasticsearch 和 MongoDB/Redis 類似,是非關(guān)系型數(shù)據(jù)庫,從索引文檔到文檔能被搜索到只有一個(gè)輕微的延遲,是采用Restful API標(biāo)準(zhǔn)的可擴(kuò)展和高可用的實(shí)時(shí)數(shù)據(jù)分析的全文搜索工具 Elastic Search 的實(shí)現(xiàn)原理是,利用內(nèi)置分詞器(Analyzer)對數(shù)據(jù)庫文本進(jìn)行分詞,將解析出的和數(shù)據(jù)

    2024年02月04日
    瀏覽(25)
  • 讀圖數(shù)據(jù)庫實(shí)戰(zhàn)筆記02_圖數(shù)據(jù)建模

    讀圖數(shù)據(jù)庫實(shí)戰(zhàn)筆記02_圖數(shù)據(jù)建模

    1.1.1.?通常用名詞來表示 1.1.2.?描述一個(gè)領(lǐng)域中的事物或者事物類型 1.1.2.1.?汽車 1.1.2.2.?用戶 1.1.2.3.?地理位置 1.1.3.?在邏輯模型和技術(shù)實(shí)現(xiàn)過程中,實(shí)體通常會(huì)變成“頂點(diǎn)” 1.2.1.?用動(dòng)詞(或動(dòng)詞短語)來表示 1.2.2.?描述實(shí)體之間的互動(dòng) 1.2.2.1.?一輛卡車移動(dòng)到一個(gè)位置”場

    2024年02月08日
    瀏覽(22)
  • elasticsearch 安裝 (es數(shù)據(jù)庫安裝詳細(xì))

    elasticsearch 安裝 (es數(shù)據(jù)庫安裝詳細(xì))

    以下操作在debian11下,其它linux版本相同 安裝的是8.6.2版本(2023.3),可以直接復(fù)制使用 以下操作默認(rèn)在root下進(jìn)行,如果切換用戶會(huì)說明 1.下載安裝包 注意:如果要安裝kibana,版本盡量要一致 主體程序從這里下載 鏈接: es 2.創(chuàng)建es的用戶 3.創(chuàng)建es存儲(chǔ)位置 存放在/var/es(根據(jù)自

    2024年02月05日
    瀏覽(44)
  • Elasticsearch ES操作:查詢數(shù)據(jù)(全部、分頁、單條)

    查詢 條件查詢 指定條數(shù) 返回結(jié)果

    2024年02月16日
    瀏覽(25)
  • 讀改變未來的九大算法筆記02_數(shù)據(jù)庫

    讀改變未來的九大算法筆記02_數(shù)據(jù)庫

    ? 2.1.1.?當(dāng)一個(gè)程序崩潰時(shí),它會(huì)丟掉所有正在處理的東西 2.1.2.?只有安放在計(jì)算機(jī)文件系統(tǒng)中的信息會(huì)得到保存 2.1.3.?崩潰相當(dāng)寬泛:包括任何可能導(dǎo)致計(jì)算機(jī)停止運(yùn)行進(jìn)而損失數(shù)據(jù)的事 2.1.3.1.?可能的事件包括斷電、硬盤出錯(cuò)、其他硬件出錯(cuò),以及操作系統(tǒng)或應(yīng)用程序中的

    2024年02月08日
    瀏覽(17)
  • flask筆記 02 | Flask數(shù)據(jù)庫連接(sqlite、mysql)

    flask筆記 02 | Flask數(shù)據(jù)庫連接(sqlite、mysql)

    Flask沒有指定使用的數(shù)據(jù)庫,不像django提供了orm數(shù)據(jù)庫抽象層,可以直接采用對象的方式操作數(shù)據(jù)庫。但為了開發(fā)效率,在開發(fā)Flask項(xiàng)目中一般會(huì)選擇 SQLALchemy 來操作數(shù)據(jù)庫,類似django的ORM. SQLALchemy實(shí)際是對數(shù)據(jù)庫的抽象,讓開發(fā)者不直接使用sql語句進(jìn)行開發(fā),而是通過Pytho

    2024年01月25日
    瀏覽(17)
  • 數(shù)據(jù)庫作業(yè)——select查詢操作

    數(shù)據(jù)庫作業(yè)——select查詢操作

    創(chuàng)建數(shù)據(jù)庫 插入數(shù)據(jù) 1、顯示所有職工的基本信息。 2、查詢所有職工所屬部門的部門號(hào),不顯示重復(fù)的部門號(hào)。 3、求出所有職工的人數(shù)。 4、列出最高工和最低工資。 5、列出職工的平均工資和總工資。 6、創(chuàng)建一個(gè)只有職工號(hào)、姓名和參加工作的新表,名為工作日期表。

    2024年02月13日
    瀏覽(28)
  • 數(shù)據(jù)庫實(shí)驗(yàn)一:基本表操作、基本數(shù)據(jù)查詢和復(fù)雜數(shù)據(jù)查詢

    數(shù)據(jù)庫實(shí)驗(yàn)一:基本表操作、基本數(shù)據(jù)查詢和復(fù)雜數(shù)據(jù)查詢

    按下圖創(chuàng)建四個(gè)表:teacher、student、course和SC,為屬性選擇合適的域、合適的主碼和外鍵約束,并為他們插入所列出數(shù)據(jù); 中文語義 teacher (TID,TNAME,DEPT,SALARY) 教師(教工號(hào),姓名,系,薪水) student (SID,SNAME,DEPT,AGE,GENDER) 學(xué)生(學(xué)號(hào),姓名,系,年齡,性別) course (CID,CNAME,DE

    2024年02月01日
    瀏覽(35)
  • ElasticSearch中實(shí)現(xiàn)模糊查詢效果(類似數(shù)據(jù)庫中l(wèi)ike功能)

    場景: 業(yè)務(wù)要求提供一個(gè)es查詢功能,實(shí)現(xiàn)類似模糊查詢效果,并且命中字段顯示紅色。舉例說明: es中字段內(nèi)容 輸入(即) 是否輸出 你好,中國,強(qiáng)大的祖國 中國 是(則‘中國’兩個(gè)字飄紅) 你好,中國,強(qiáng)大的祖國 俄國 否 你好,中國,強(qiáng)大的祖國 最大 否 實(shí)

    2024年02月12日
    瀏覽(102)
  • 【ElasticSearch】深入探索 ElasticSearch 對數(shù)據(jù)的聚合、查詢自動(dòng)補(bǔ)全、與數(shù)據(jù)庫間的同步問題以及使用 RabbitMQ 實(shí)現(xiàn)與數(shù)據(jù)庫間的同步

    【ElasticSearch】深入探索 ElasticSearch 對數(shù)據(jù)的聚合、查詢自動(dòng)補(bǔ)全、與數(shù)據(jù)庫間的同步問題以及使用 RabbitMQ 實(shí)現(xiàn)與數(shù)據(jù)庫間的同步

    在本文中,我們將深入探討 ElasticSearch 在數(shù)據(jù)處理中的關(guān)鍵功能,包括數(shù)據(jù)聚合、查詢自動(dòng)補(bǔ)全以及與數(shù)據(jù)庫的同步問題。 首先,我們將聚焦于 ElasticSearch 強(qiáng)大的聚合功能,解釋什么是聚合以及如何通過 DSL 語句和 RestClient 實(shí)現(xiàn)各種聚合操作。這一功能能夠讓我們更深入地了

    2024年02月08日
    瀏覽(28)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包