成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Elasticsearch查詢及聚合類DSL語句寶典

數據庫 MySQL
如果match 查詢數字,日期,布爾值或者not_analyzed 的字符串時,會精確匹配搜索值,不做分詞解析;如果match 查詢全文本,會對查詢詞做分詞解析,然后搜索。

作者:京東科技 紀海雨

前言

隨著使用es場景的增多,工作當中避免不了去使用es進行數據的存儲,在數據存儲到es當中以后就需要使用DSL語句進行數據的查詢、聚合等操作,DSL對SE的意義就像SQL對MySQL一樣,學會如何編寫查詢語句決定了后期是否能完全駕馭ES,所以至關重要,本專題主要是分享常用的DSL語句,拿來即用。

一、match

如果match 查詢數字,日期,布爾值或者not_analyzed 的字符串時,會精確匹配搜索值,不做分詞解析;如果match 查詢全文本,會對查詢詞做分詞解析,然后搜索。

比如對keyword 類型的tag 查詢,"京東總部"不會分詞,必須完全相等的詞才會被搜索出來

{a
"query": {
"match": {
"content" : {
"tag" : "京東總部"
}
}
}
}

比如"寶馬多少馬力"會被分詞為"寶馬 多少 馬力", 所有有關"寶馬 多少 馬力", 那么所有包含這三個詞中的一個或多個的文檔就會被搜索出來。并且根據lucene的評分機制(TF/IDF)來進行評分

{
"query": {
"match": {
"content" : {
"query" : "寶馬多少馬力"
}
}
}
}

二、match_phrase

如果想要精確匹配所有同時包含"寶馬 多少 馬力"的文檔,就要使用 match_phrase 了

{
"query": {
"match_phrase": {
"content" : {
"query" : "寶馬多少馬力"
}
}
}
}

三、mult_match

如果我們希望兩個字段進行匹配,其中一個字段有這個文檔就滿足的話,使用multi_match

{
"query": {
"multi_match": {
"query" : "我的寶馬多少馬力",
"fields" : ["title", "content"]
}
}
}

四、term

關鍵字精確匹配,不分詞解析。注意 term 包含(contains) 操作,而非 等值(equals)判斷。如果文檔包含full_text 及其他詞,也會命中返回。

使用term要確定的是這個字段是否“被分析”(analyzed),默認的字符串是被分析的。

比如下面的例子,其中的full_text是被分析過的,所以full_text的索引中存的就是[quick, foxes],而extra_value中存的是[Quick Foxes!]

PUT my_index
{
"mappings": {
"my_type": {
"properties": {
"full_text": {
"type": "string"
},
"exact_value": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}

PUT my_index/my_type/1
{
"full_text": "Quick Foxes!",
"exact_value": "Quick Foxes!"
}

請求不出數據的,因為full_text分詞后的結果中沒有[Quick Foxes!]這個分詞

GET my_index/my_type/_search
{
"query": {
"term": {
"full_text": "Quick Foxes!"
}
}
}

五、terms

指定多值精確匹配,如果字段包含了指定值中的任何一個值,那么文檔滿足條件。類似sql中的in

{
"terms": {
"tag": [
"search",
"full_text",
"nosql"
]
}
}

六、range

數字/時間的區間查詢,操作符:

?gt > greater than

?gte >=

?lt < litter than

?lte <=

{
"query":{
"range": {
"age": {
"gte": 20,
"lt": 30
}
}
}
}

七、wildcard

通配符索引。* 表示全匹配,? 表示單一匹配。掃描所有倒排索引,性能較差

{ 
"query": {
"wildcard": {
"companyName": "*京東*"
}
}
}

八、regexp

正則索引。掃描所有倒排索引,性能較差

{ 
"query": {
"regexp": {
"postcode": "W[0-9].+"
}
}
}

九、組合多查詢(bool查詢)

bool 查詢后面可以跟這四種匹配模式

?must 必須匹配

?must_not 必須不匹配

?should 匹配任意,等價or

?filter 必須匹配:過濾模式

比如我們想要請求"content 中帶寶馬,但是tag 中不帶寶馬"這樣類似的需求,就需要用到bool 聯合查詢。

{
"query":{
"bool":{
"must":{
"term":{
"content":"寶馬"
}
},
"must_not":{
"term":{
"tags":"寶馬"
}
}
}
}
}

十、聚合

聚合包含一下兩種:

1、 指標聚合(Metric Aggregation):一些數學運算,可以對文檔字段進行統計分析

  • 輸出一個值
  • min
  • max
  • sum
  • avg
  •  value_count 統計某字段有值的文檔數
  • cardinality 某字段值去重計數
  • 輸出多個值
  • stats
  • percentiles
  • percentile_ranks

2、桶聚合(Bucket Aggregation) :一些列滿足特定條件的文檔的集合,相當于sql 的groupby

  • terms 對某個字段統計每個不同的內容,以及出現文檔的個數
  • range 某個范圍內文檔的個數

默認聚合范圍是全文,但是如果有query查詢,那么聚合的范圍就是query查詢的結果。

value_count 統計某字段有值的文檔數

{
"size": 0,
"aggs": {
"count": {
"value_count": {
"field": "companyName"
}
}
}
}

指定查詢語句進行統計

{
"query": {
"term": {
"companyName": "安徽科達智慧能源科技有限公司"
}
},
"aggs": {
"count": { //自定義名稱
"terms": {
"field": "companyName"
}
}
}
}

以上就是本期分享的DSL語句,小伙伴們結合自己的使用查詢場景進行操練起來吧。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2020-09-28 11:09:54

SQLDSL

2023-11-30 15:23:07

聚合查詢數據分析

2023-06-13 08:00:57

ChatGPT語言模型

2023-10-29 09:11:03

DSL語法

2022-12-28 08:16:16

metric聚合java

2023-11-13 12:48:32

語言DSL

2020-12-02 08:31:47

Elasticsear

2022-12-12 09:13:45

global聚合filters

2009-07-02 09:26:17

操作Hibernate

2024-10-11 16:51:02

2023-12-26 12:12:57

檢索調優Scripting場景

2011-12-16 10:11:50

Linux求職寶典

2020-10-15 09:19:36

Elasticsear查詢速度

2015-05-12 16:31:22

Elasticsear開源分布式搜索引擎

2017-05-04 10:11:51

ElasticsearJavaAnalyzeRequ

2009-09-24 10:35:10

Hibernate查詢

2010-10-27 10:11:07

Oracle分頁查詢

2021-07-05 09:24:06

MySQL SQL 語句數據庫

2023-10-08 08:51:14

搜索與查詢結構化查詢

2010-10-21 10:28:13

SQL Server查
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久99精品久久久久久琪琪 | www.天天操 | 天天综合永久入口 | 91视频进入| 2021天天干夜夜爽 | 91精品一区| av在线免费观看网站 | 日韩三区在线 | 天天干狠狠操 | 国产精品欧美一区二区三区 | 日韩精品一区二区在线 | 91.com视频| 草久久久 | 亚洲日韩中文字幕一区 | 亚洲一区二区三区视频 | 午夜影院在线视频 | 99精品一区二区三区 | 日韩成人免费av | 久久大陆 | 日韩视频一区二区三区 | 国产精品一区二区av | 一区二区在线免费观看 | 日韩欧美一区二区三区在线播放 | av在线播放网站 | 亚洲精品视频三区 | 国产日韩欧美一区二区 | 在线观看不卡av | 亚洲综合一区二区三区 | 久久美女网 | 国产精品自拍视频 | 91视频国产区 | 久久久久亚洲 | 99热最新 | 免费亚洲一区二区 | 日韩中文字幕一区二区 | 亚洲精品自拍视频 | 亚洲一区二区三区在线视频 | 91精品一区二区三区久久久久 | 亚洲一区国产 | 日韩成人精品一区二区三区 | 久久久精品久久 |