日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

map语法获取index_复习Elasticsearch的基础语法(一)

發(fā)布時間:2024/9/27 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 map语法获取index_复习Elasticsearch的基础语法(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

之前實踐過的Elasticsearch到現(xiàn)在基本上的語法我都回憶不起來了,所以準備寫篇文章幫助自己復習一下,沒有什么技術(shù)含量的分享,但是也分享給想初步了解的朋友們。

就不介紹Elasticsearch了,直接進入正文(手動分割線0.0)

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

為了模擬真實場景,建議大家在linux下安裝Elasticsearch。

Kibana是一個Elasticsearch索引庫數(shù)據(jù)統(tǒng)計工具,可以利用Elasticsearch的聚合功能,生成各種圖表,而且還提供了操作Elasticsearch索引數(shù)據(jù)的控制臺,并且提供了一定的API提示,非常有利于我們學習Elasticsearch的語法(劃重點!!!提供API提示!),建議安裝。

啟動后Kibana后

選擇左側(cè)的DevTools菜單,即可進入控制臺頁面

1.基本概念

Elasticsearch也是基于Lucene的全文檢索庫,本質(zhì)也是存儲數(shù)據(jù),很多概念與MySQL類似的。

對比關(guān)系:

索引(indices)--------------------------------Databases 數(shù)據(jù)庫

類型(type)-----------------------------Table 數(shù)據(jù)表 ? ? 文檔(Document)----------------Row 行 ? 字段(Field)-------------------Columns 列

2.創(chuàng)建索引

Elasticsearch采用Rest風格API,因此其API就是一次http請求,你可以用任何工具發(fā)起http請求

創(chuàng)建索引的請求格式:

  • 請求方式:PUT

  • 請求路徑:/索引庫名

  • 請求參數(shù):json格式:

    { ? ?"settings": { ? ? ? ?"number_of_shards": 3, ? ? ? ?"number_of_replicas": 2 ? ? }}
    • number_of_shards:分片數(shù)量

    • number_of_replicas:副本數(shù)量

    • settings:索引庫的設置

查看和刪除分別使用get和delete請求即可。

2.1 映射配置

通俗的講就是mysql數(shù)據(jù)庫中的建表

創(chuàng)建映射請求方式依然是PUT

PUT /索引庫名/_mapping/類型名稱{ "properties": { ? "字段名": { ? ? "type": "類型", ? ? "index": true, ? ? "store": true, ? ? "analyzer": "分詞器" ? } }}
  • 類型名稱:就是前面type的概念,類似于數(shù)據(jù)庫中的不同表字段名:任意填寫 ,可以指定許多屬性,例如:

  • type:類型,可以是text、long、short、date、integer、object等

  • index:是否索引,默認為true

  • store:是否存儲,默認為false

  • analyzer:分詞器

Elasticsearch中支持的數(shù)據(jù)類型非常豐富

他的String類型,又分兩種,這個很有特色!:

    • text:可分詞,不可參與聚合

    • keyword:不可分詞,數(shù)據(jù)會作為完整字段進行匹配,可以參與聚合

2.1.2index

index影響字段的索引情況。

  • true:字段會被索引,則可以用來進行搜索。默認值就是true

  • false:字段不會被索引,不能用來搜索

index的默認值就是true,但是有些字段是我們不希望被索引的,比如商品的圖片信息,就設置index為false。

2.1.3 store

是否將數(shù)據(jù)進行額外存儲。

Elasticsearch在創(chuàng)建文檔索引時,會將文檔中的原始數(shù)據(jù)備份,保存到一個叫做_source的屬性中。而且我們可以通過過濾_source來選擇哪些要顯示,哪些不顯示。

而如果設置store為true,就會在_source以外額外存儲一份數(shù)據(jù),多余,因此一般我們都會將store設置為false。默認就為false

2.2 新增數(shù)據(jù)

通過POST請求,可以向一個已經(jīng)存在的索引庫中添加數(shù)據(jù)

示例:

POST /test/goods/

{

? ? "title":"籃球",

? ? "images":"123",

? ? "price":99

}

通過kibana查看數(shù)據(jù):

get _search

{

? ? "query":{

? ? ? ? "match_all":{}

? ? }

}

-----------------------------------------------------------------------------

響應:

{

? "_index": "test",

? "_type": "goods",

? "_id": "r9c1KGMBIhaxtY5rlRKv",

? "_version": 1,

? "_score": 1,

? "_source": {

? ? "title": "籃球",

? ? "images": "123",

? ? "price": 99

? }

}

  • _source:源文檔信息,所有的數(shù)據(jù)都在里面。

  • _id:這條文檔的唯一標示,與文檔自己的id字段沒有關(guān)聯(lián)

3. 查詢

我們從4塊來講查詢:

  • 基本查詢

  • _source過濾

  • 結(jié)果過濾

  • 高級查詢

  • 排序

3.1基本查詢

基本語法

GET /索引庫名/_search{ ? ?"query":{ ? ? ? ?"查詢類型":{ ? ? ? ? ? ?"查詢條件":"查詢條件值" ? ? ? } ? }}

這里的query代表一個查詢對象,里面可以有不同的查詢屬性

  • 查詢類型:

    • 例如:match_all,?match,term?,?range 等等

  • 查詢條件:查詢條件會根據(jù)類型的不同,寫法也有差異

示例:

GET /test/_search

{

? ? "query":{

? ? ? ? "match_all": {}

? ? }

}

  • query:代表查詢對象

  • match_all:代表查詢所有

------------------------------------------------------------------------------

結(jié)果:

{

? "took": 2,

? "timed_out": false,

? "_shards": {

? ? "total": 3,

? ? "successful": 3,

? ? "skipped": 0,

? ? "failed": 0

? },

? "hits": {

? ? "total": 2,

? ? "max_score": 1,

? ? "hits": [

? ? ? {

? ? ? ? "_index": "jiang",

? ? ? ? "_type": "goods",

? ? ? ? "_id": "2",

? ? ? ? "_score": 1,

? ? ? ? "_source": {

? ? ? ? ? "title": "籃球",

? ? ? ? ? "images": "123",

? ? ? ? ? "price": 99

? ? ? ? }

? ? ? },

? ? ? {

? ? ? ? "_index": "jiang",

? ? ? ? "_type": "goods",

? ? ? ? "_id": "r9c1KGMBIhaxtY5rlRKv",

? ? ? ? "_score": 1,

? ? ? ? "_source": {

? ? ? ? ? "title": "足球",

? ? ? ? ? "images": "123",

? ? ? ? ? "price": 69

? ? ? ? }

? ? ? }

? ? ]

? }

}

  • took:查詢花費時間,單位是毫秒

  • time_out:是否超時

  • _shards:分片信息

  • hits:搜索結(jié)果總覽對象

    • _index:索引庫

    • _type:文檔類型

    • _id:文檔id

    • _score:文檔得分

    • _source:文檔的源數(shù)據(jù)

    • total:搜索到的總條數(shù)

    • max_score:所有結(jié)果中文檔得分的最高分

    • hits:搜索結(jié)果的文檔對象數(shù)組,每個元素是一條搜索到的文檔信息

3.2匹配查詢

  • or關(guān)系

match類型查詢,會把查詢條件進行分詞,然后進行查詢,多個詞條之間是or的關(guān)系

GET /test/_search

{

? ? "query":{

? ? ? ? "match":{

? ? ? ? ? ? "title":"小米電視"

? ? ? ? }

? ? }

}

結(jié)果不僅會查詢到電視,而且與小米相關(guān)的都會查詢到,多個詞之間是or的關(guān)系。

-------------------------------------------------------------------------------------------------------

  • and關(guān)系

某些情況下,我們需要更精確查找,我們希望這個關(guān)系變成and,可以這樣做

GET /test/_search

{

? ? "query":{

? ? ? ? "match": {

? ? ? ? ? "title": {

? ? ? ? ? ? "query": "小米電視",

? ? ? ? ? ? "operator": "and"

? ? ? ? ? }

? ? ? ? }

? ? }

}

這樣,只有同時包含小米和電視的詞條才會被搜索到。

3.3多字段查詢

multi_match與match類似,不同的是它可以在多個字段中查詢結(jié)果我們會在title字

GET /test/_search

{

? ? "query":{

? ? ? ? "multi_match": {

? ? ? ? ? ? "query":? ? "小米",

? ? ? ? ? ? "fields":? ?[ "title", "subTitle" ]

? ? ? ? }

}

}

段和subtitle字段中查詢小米這個詞

3.4詞條匹配(term)

term 查詢被用于精確值 匹配,這些精確值可能是數(shù)字、時間、布爾或者那些未分詞的字符串

GET /test/_search

{

? ? "query":{

? ? ? ? "term":{

? ? ? ? ? ? "price":2699.00

? ? ? ? }

? ? }

}

3.5結(jié)果過濾

默認情況下,elasticsearch在搜索的結(jié)果中,會把文檔中保存在_source的所有字段都返回。

如果我們只想獲取其中的部分字段,我們可以添加_source的過濾

GET /test/_search

{

? "_source": ["title","price"],

? "query": {

? ? "term": {

? ? ? "price": 2699

? ? }

? }

}

------------------------------------------------------------------------------------------------------------

突然發(fā)現(xiàn)有點晚了,還是下次再繼續(xù)介紹高級查詢和聚合的使用好了。。。。。。。。。。。

敬請期待~~~~~~~~~~~

總結(jié)

以上是生活随笔為你收集整理的map语法获取index_复习Elasticsearch的基础语法(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。