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

ElasticSearch【query語法】

這篇具有很好參考價(jià)值的文章主要介紹了ElasticSearch【query語法】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

介紹ES 的query子句的語法,query子句主要用于編寫查詢條件,類似SQL中的where語句。

query子句主要用來編寫類似SQL的Where語句,支持布爾查詢(and/or)、IN、全文搜索、模糊匹配、范圍查詢(大于小于)。

text類型字段支持分詞,可以使用模糊查詢
keyword類型只能做等值查詢,不能進(jìn)行分詞

1.匹配單個(gè)字段

通過match實(shí)現(xiàn)全文搜索,全文搜索的后面有單獨(dú)的章節(jié)講解,這里大家只要知道簡(jiǎn)單的用法就可以。

語法:

GET /{索引名}/_search
{
  "query": {
    "match": {
      "{FIELD}": "{TEXT}"
    }
  }
}

說明:
{FIELD} - 就是我們需要匹配的字段名
{TEXT} - 就是我們需要匹配的內(nèi)容
例子:

GET /article/_search
{
    "query": {
        "match" : {
            "title" : "ES教程"
        }
    }
}

article索引中,title字段匹配ES教程的所有文檔。
如果title字段的數(shù)據(jù)類型是text類型,搜索關(guān)鍵詞會(huì)進(jìn)行分詞處理。

**

2.精確匹配單個(gè)字段

**
如果我們想要類似SQL語句中的等值匹配,不需要進(jìn)行分詞處理,例如:訂單號(hào)、手機(jī)號(hào)、時(shí)間字段,不需要分值處理,只要精確匹配。

通過term實(shí)現(xiàn)精確匹配語法:

GET /{索引名}/_search
{
  "query": {
    "term": {
      "{FIELD}": "{VALUE}"
    }
  }
}

說明:

{FIELD} - 就是我們需要匹配的字段名
{VALUE} - 就是我們需要匹配的內(nèi)容,除了TEXT類型字段以外的任意類型。
例子:

GET /order_v2/_search
{
  "query": {
    "term": {
      "order_no": "202003131209120999"
    }
  }
}

搜索訂單號(hào)order_no = "202003131209120999"的文檔。

類似SQL語句:

select * from order_v2 where order_no = "202003131209120999"

3.通過terms實(shí)現(xiàn)SQL的in語句

如果我們要實(shí)現(xiàn)SQL中的in語句,一個(gè)字段包含給定數(shù)組中的任意一個(gè)值就匹配。

terms語法:

GET /order_v2/_search
{
  "query": {
    "terms": {
      "{FIELD}": [
        "{VALUE1}",
        "{VALUE2}"
      ]
    }
  }
}

說明:

{FIELD} - 就是我們需要匹配的字段名
{VALUE1}, {VALUE2} … {VALUE N} - 就是我們需要匹配的內(nèi)容,除了TEXT類型字段以外的任意類型。
例子:

GET /order_v2/_search
{
  "query": {
    "terms": {
      "shop_id": [123,100,300]
    }
  }
}

搜索order_v2索引中,shop_id字段,只要包含[123,100,300]其中一個(gè)值,就算匹配。

類似SQL語句:

select * from order_v2 where shop_id in (123,100,300)

**

4.范圍查詢

**
通過range實(shí)現(xiàn)范圍查詢,類似SQL語句中的>, >=, <, <=表達(dá)式。

range語法:

GET /{索引名}/_search
{
  "query": {
    "range": {
      "{FIELD}": {
        "gte": 10, 
        "lte": 20
      }
    }
  }
}

參數(shù)說明:

{FIELD} - 字段名
gte范圍參數(shù) - 等價(jià)于>=
lte范圍參數(shù) - 等價(jià)于 <=
范圍參數(shù)可以只寫一個(gè),例如:僅保留 “gte”: 10, 則代表 FIELD字段 >= 10
范圍參數(shù)如下:

gt - 大于 ( > )
gte - 大于且等于 ( >= )
lt - 小于 ( < )
lte - 小于且等于 ( <= )

例子1:

GET /order_v2/_search
{
  "query": {
    "range": {
      "shop_id": {
        "gte": 10,
        "lte": 200
      }
    }
  }
}

查詢order_v2索引中,shop_id >= 10 且 shop_id <= 200的文檔

類似SQL:

select * from order_v2 where shop_id >= 10 and shop_id <= 200

例子2:

GET /order_v2/_search
{
  "query": {
    "range": {
      "shop_id": {
        "gte": 10      
       }
    }
  }
}

類似SQL:

select * from order_v2 where shop_id >= 10

**

5.bool組合查詢

**
前面的例子都是設(shè)置單個(gè)字段的查詢條件,如果需要編寫類似SQL的Where語句,組合多個(gè)字段的查詢條件,可以使用bool語句。

5.1. bool查詢基本語法結(jié)構(gòu)

在ES中bool查詢就是用來組合布爾查詢條件,布爾查詢條件,就是類似SQL中的and (且)、or (或)。

在SQL中,我們需要and和or,還有括號(hào)來組合查詢條件,在ES中使用bool查詢可用做到同樣的效果。

bool語法結(jié)構(gòu):

GET /{索引名}/_search
{
  "query": {
    "bool": { // bool查詢
      "must": [], // must條件,類似SQL中的and, 代表必須匹配條件
      "must_not": [], // must_not條件,跟must相反,必須不匹配條件
      "should": [] // should條件,類似SQL中or, 代表匹配其中一個(gè)條件
    }
  }
}

可以任意選擇must、must_not和should條件的參數(shù)都是一個(gè)數(shù)組,意味著他們都支持設(shè)置多個(gè)條件。

提示:前面介紹的單個(gè)字段的匹配語句,都可以用在bool查詢語句中進(jìn)行組合。

5.2. must條件

類似SQL的and,代表必須匹配的條件。

語法:

GET /{索引名}/_search
{
  "query": {
    "bool": {
      "must": [
         {匹配條件1},
         {匹配條件2},
         ...可以有N個(gè)匹配條件...
        ]
    }
  }
}

例子1:

GET /order_v2/_search
{
  "query": {
    "bool": {
      "must": [
          {
            "term": {
              "order_no":  "202003131209120999"
            }
          },
          {
            "term": {
              "shop_id":  123
            }
          }
        ]
    }
  }
}

這里的Must條件,使用了term精確匹配。

等價(jià)SQL:

select * from order_v2 where order_no="202003131209120999" and shop_id=123
5.3. must_not條件

跟must的作用相反。

語法:

GET /{索引名}/_search
{
  "query": {
    "bool": {
      "must_not": [
         {匹配條件1},
         {匹配條件2},
         ...可以有N個(gè)匹配條件...
        ]
    }
  }
}

例子:

GET /order_v2/_search
{
  "query": {
    "bool": {
      "must_not": [
          {
            "term": {
              "shop_id": 1
            }
          },
          {
            "term": {
              "shop_id":  2
            }
          }
        ]
    }
  }
}

等價(jià)sql:

select * from order_v2 where shop_id != 1 and shop_id != 2
5.3. should條件

類似SQL中的 or, 只要匹配其中一個(gè)條件即可

語法:

GET /{索引名}/_search
 {
   "query": {
     "bool": {
       "should": [
          {匹配條件1},
          {匹配條件2},
          …可以有N個(gè)匹配條件…
         ]
     }
   }
 }

例子:

GET /order_v2/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "order_no": "202003131209120999"
          }
        },
        {
          "match": {
            "order_no": "22222222222222222"
          }
        }
      ]
    }
  }
}

等價(jià)SQL:

select * from order_v2 where order_no="202003131209120999" or order_no="22222222222222222"
5.4. bool綜合例子
GET /order_v2/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "bool": {
            "must": [
              {
                "term": {
                  "order_no": "2020031312091209991"
                }
              },
              {
                "range": {
                  "shop_id": {
                    "gte": 10,
                    "lte": 200
                  }
                }
              }
            ]
          }
        },
        {
          "terms": {
            "tag": [
              1,
              2,
              3,
              4,
              5,
              12
            ]
          }
        }
      ]
    }
  }
}

等價(jià)SQL:文章來源地址http://www.zghlxwxcb.cn/news/detail-477843.html

select * from order_v2 where (order_no='202003131209120999' and (shop_id>=10 and shop_id<=200)) or tag in (1,2,3,4,5)

到了這里,關(guān)于ElasticSearch【query語法】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • elasticsearch 筆記二:搜索DSL 語法(搜索API、Query DSL)

    elasticsearch 筆記二:搜索DSL 語法(搜索API、Query DSL)

    從索引 tweet 里面搜索字段 user 為 kimchy 的記錄 從索引 tweet,user 里面搜索字段 user 為 kimchy 的記錄 從所有索引里面搜索字段 tag 為 wow 的記錄 說明:搜索的端點(diǎn)地址可以是多索引多 mapping type 的。搜索的參數(shù)可作為 URI 請(qǐng)求參數(shù)給出,也可用 request body 給出 URI 搜索方式通過 URI

    2024年02月04日
    瀏覽(18)
  • es 搜索中同時(shí)包含 “query“ 和 “filter“ 子句

    es 搜索中同時(shí)包含 “query“ 和 “filter“ 子句

    Elasticsearch支持很多查詢方式,其中一種就是DSL,它是把請(qǐng)求寫在JSON里面,然后進(jìn)行相關(guān)的查詢。 一、Query DSL 與 Filter DSL DSL查詢語言中存在兩種:查詢DSL(query DSL)和過濾DSL(filter DSL)。 它們兩個(gè)的區(qū)別如下圖: 在查詢上下文中,查詢會(huì)回答這個(gè)問題——“ 這個(gè)文檔匹不

    2024年02月04日
    瀏覽(19)
  • Elasticsearch Boolean Query查詢介紹

    前言 ES 和 Solr 的底層都是基于Apache Lucene 實(shí)現(xiàn),bool 查詢的底層實(shí)現(xiàn)是Lucene 的 BooleanQuery,其可以組合多個(gè)子句查詢,類似 SQL 語句里面的 OR 查詢。 查詢介紹 在 ES 里面 Boolean 查詢封裝了 4 種 API 接口能力,可以單獨(dú)使用,也可以組合使用,總結(jié)如下: 函數(shù) 描述 must query 關(guān)鍵

    2024年02月13日
    瀏覽(45)
  • Elasticsearch:介紹 kNN query,這是進(jìn)行 kNN 搜索的專家方法

    Elasticsearch:介紹 kNN query,這是進(jìn)行 kNN 搜索的專家方法

    作者:來自 Elastic?Mayya Sharipova, Benjamin Trent Elasticsearch 中的 kNN 搜索被組織為搜索請(qǐng)求的頂層(top level)部分。 我們這樣設(shè)計(jì)是為了: 無論分片數(shù)量多少,它總是可以返回全局 k 個(gè)最近鄰居 這些全局 k 個(gè)結(jié)果與其他查詢的結(jié)果相結(jié)合以形成混合搜索 全局 k 結(jié)果被傳遞到聚合

    2024年01月23日
    瀏覽(42)
  • neo4j查詢語言Cypher詳解(一)--語法和子句

    neo4j 的圖查詢語言叫 Cypher 。Cypher的獨(dú)特之處在于它提供了一種匹配模式和關(guān)系的可視化方式。 (nodes)-[:ARE_CONNECTED_TO]-(otherNodes) 使用圓角括號(hào)表示節(jié)點(diǎn)(nodes), -[:ARROWS]- 表示關(guān)系。 Cypher解析器接受任意輸入字符串。 unicode 通??梢允褂棉D(zhuǎn)義 uxxx 。 支持的空白符 描述 Unicode 字

    2024年02月14日
    瀏覽(31)
  • SQLite學(xué)習(xí)(七)SQLite的HAVING、DISTINCT、JOIN、UNION子句語法和應(yīng)用

    在上一篇《SQLite學(xué)習(xí)(六)SQLite的GLOB、LIMIT、ORDER、GROUP UP子句語法和應(yīng)用》 中,講解了 SQLite的GLOB、LIMIT、ORDER、GROUP UP 子句語法,在本篇博客中,將繼續(xù)講解 SQLite 子句的基本語法。 同學(xué)們將學(xué)習(xí)到: SQLite HAVING 子句語法 SQLite DISTI

    2024年02月06日
    瀏覽(19)
  • SQLite學(xué)習(xí)(六)SQLite的GLOB、LIMIT、ORDER、GROUP UP子句語法和應(yīng)用

    在上一篇《SQLite學(xué)習(xí)(五)SQLite的WHERE、AND、OR、LIKE子句語法和應(yīng)用》 中,講解了 SQLite中 WHERE、AND、OR、LIKE 子句的語法,在本篇博客中,將繼續(xù)講解 SQLite 子句的基本語法。 同學(xué)們將學(xué)習(xí)到: SQLite GLOB 子句語法 SQLite LIMIT 子句語法 SQLite ORDER 子句語法 SQLite GROUP UP 子句語法

    2024年02月06日
    瀏覽(26)
  • Elasticsearch中倒排索引、分詞器、DSL語法使用介紹

    Elasticsearch中倒排索引、分詞器、DSL語法使用介紹

    ?? 簡(jiǎn)介:java系列技術(shù)分享(??持續(xù)更新中…??) ?? 初衷:一起學(xué)習(xí)、一起進(jìn)步、堅(jiān)持不懈 ?? 如果文章內(nèi)容有誤與您的想法不一致,歡迎大家在評(píng)論區(qū)指正?? ?? 希望這篇文章對(duì)你有所幫助,歡迎點(diǎn)贊 ?? 收藏 ?留言 ?? ?? 更多文章請(qǐng)點(diǎn)擊 簡(jiǎn)介及安裝請(qǐng)查看這篇 :Elasticsea

    2024年02月11日
    瀏覽(27)
  • SQL DELETE 語句:刪除表中記錄的語法和示例,以及 SQL SELECT TOP、LIMIT、FETCH FIRST 或 ROWNUM 子句的使用

    SQL DELETE 語句:刪除表中記錄的語法和示例,以及 SQL SELECT TOP、LIMIT、FETCH FIRST 或 ROWNUM 子句的使用

    SQL DELETE 語句用于刪除表中的現(xiàn)有記錄。 注意 :在刪除表中的記錄時(shí)要小心!請(qǐng)注意DELETE語句中的WHERE子句。WHERE子句指定應(yīng)刪除哪些記錄。如果省略WHERE子句,將會(huì)刪除表中的所有記錄! 以下是示例中使用的 Customers 表的一部分: CustomerID CustomerName ContactName Address City Postal

    2024年02月05日
    瀏覽(22)
  • Elasticsearch Query DSL

    Elasticsearch Query DSL

    這里使用的 Elasticsearch 的版本為 7.12.1 。 1.1 文檔(Document) ElasticSearch 是面向文檔的,文檔是所有可搜索數(shù)據(jù)的最小單位,例如 MySQL 的一條數(shù)據(jù)記錄。 文檔會(huì)被序列化成為 json 格式,保存在 ElasticSearch 中。 每個(gè)文檔都有一個(gè)唯一 ID,例如 MySQL 中的主鍵 ID。 JSON文檔 一篇文檔包

    2024年02月15日
    瀏覽(18)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包