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

elasticsearch簡(jiǎn)單入門語法

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

基本操作

創(chuàng)建不同的分詞器

ik_smart: 極簡(jiǎn)分詞 ; ik_max_word: 最細(xì)力再度分詞

elasticsearch簡(jiǎn)單入門語法,elasticsearchelasticsearch簡(jiǎn)單入門語法,elasticsearch

基本的rest命令

method url地址 描述
PUT localhost:9200/索引名稱/類型名稱/文檔id 創(chuàng)建文檔(指定文檔id)
POST localhost:9200/索引名稱/類型名稱 創(chuàng)建文檔(隨機(jī)文檔id)
POST localhost:9200/索引名稱/類型名稱/文檔id/_update 修改文檔
DELETE localhost:9200/索引名稱/類型名稱/文檔id 刪除文檔
GET localhost:9200/索引名稱/類型名稱/文檔id 查詢文檔通過文檔id
POST localhost:9200/索引名稱/類型名稱/_search 查詢所有數(shù)據(jù)

索引基本操作

查詢所有索引

elasticsearch簡(jiǎn)單入門語法,elasticsearchElasticsearch 7.x 版本

# 返回一個(gè)僅包含索引名稱的 JSON 數(shù)組 ?

GET /_cat/indices?format=json&h=index

擴(kuò)展:獲取ES的其他信息

GET _cat/health ? ? ?# 查看健康值 ?

GET _cat/indices?v ?#查看所有東西的版本信息

新增索引

?# ElasticSearch的7.x.x版本
?PUT /索引名/類型名/文檔id
?{
?請(qǐng)求體
?}

?# 創(chuàng)建索引
?

?PUT test1
?{
?"mappings": {
?"properties": {
??"name": {
????"type": "text"
??},
??"age":{
????"type": "integer"
??}
?}
?}
?}
?# 創(chuàng)建加索引時(shí)同時(shí)添加數(shù)據(jù),es會(huì)自動(dòng)給屬性設(shè)置type
?# ElasticSearch的8.x.x版本,類型已經(jīng)棄用,默認(rèn)寫_doc。
?PUT /索引名/_doc/文檔id
?{
?請(qǐng)求體
?}
??
?PUT test1/_doc/1
?{
?"name":"小明",
?"age":23
?}?# ElasticSearch的8.x.x版本,類型已經(jīng)棄用,默認(rèn)寫_doc。
?PUT /索引名/_doc/文檔id
?{
?請(qǐng)求體
?}
?CreateIndexRequest request = new CreateIndexRequest(INDEX);
?CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);

查看索引

elasticsearch簡(jiǎn)單入門語法,elasticsearch

name需要指定類型

官網(wǎng)類型文檔地址:Keyword type family | Elasticsearch Guide [8.9] | Elastic

  • 字符串類型 text、keyword

  • 數(shù)值類型 long,integer,short,byte,double,float,half float,scaled float

  • 日期類型 date

  • te布爾值類型 boolean·

  • 二進(jìn)制類型 binary

  • 等等……

設(shè)置字段類型

elasticsearch簡(jiǎn)單入門語法,elasticsearch

修改索引

索引是不可修改的。一旦創(chuàng)建了索引,您不能直接修改其結(jié)構(gòu)或字段的映射。如果要修改索引的結(jié)構(gòu),您需要重新創(chuàng)建索引并重新索引數(shù)據(jù)。

?POST _reindex
?{
?"source": {
? "index": "your_old_index"
?},
?"dest": {
? "index": "new_index"
?}
?}

新索引和舊索引的字段不一定需要完全一致。在重新創(chuàng)建索引和重新索引數(shù)據(jù)時(shí),可以對(duì)字段進(jìn)行修改、刪除或添加新的字段。

如果字段在新索引中已經(jīng)存在,則該字段的映射將被保留。如果字段在新索引中不存在,則會(huì)根據(jù)重新索引的數(shù)據(jù)動(dòng)態(tài)創(chuàng)建字段的映射。

例如,假設(shè)舊索引中有一個(gè) "field1" 字段,而新索引中沒有。在重新索引數(shù)據(jù)時(shí),如果數(shù)據(jù)中存在 "field1" 字段,Elasticsearch 將自動(dòng)創(chuàng)建該字段的映射并將其添加到新索引中。

同樣地,如果舊索引中存在一個(gè) "field2" 字段,而新索引中也有一個(gè)名為 "field2" 的字段,那么在重新索引數(shù)據(jù)時(shí),新索引中的 "field2" 字段的映射將保留不變。

需要注意的是,如果字段在新索引和舊索引中具有不兼容的類型或映射定義,可能會(huì)導(dǎo)致數(shù)據(jù)轉(zhuǎn)換或丟失。因此,在進(jìn)行索引結(jié)構(gòu)修改時(shí),請(qǐng)確保對(duì)數(shù)據(jù)和字段映射的變化有充分的了解和計(jì)劃。

刪除索引

elasticsearch簡(jiǎn)單入門語法,elasticsearch

關(guān)于文檔的基本操作

基本操作

添加數(shù)據(jù)
PUT /index/_doc/1
{
  "name": "狂神說",
  "age": 3,
  "desc": "工資2500",
  "tags": ["直男","溫暖","技術(shù)宅"]
}
PUT /index/_doc/2
{
  "name": "張三",
  "age": 30,
  "desc": "沒有工資",
  "tags": ["渣男","旅游","交友"]
}
查詢數(shù)據(jù)
# 查詢索引下,對(duì)應(yīng)文檔ID的數(shù)據(jù)
GET /index/_doc/1
GET /index/_doc/2

elasticsearch簡(jiǎn)單入門語法,elasticsearch

更新 PUT(不推薦)

PUT 修改數(shù)據(jù),需要全屬性字段都存在,否則會(huì)丟失缺失的屬性字段

# 修改數(shù)據(jù)
put index/_doc/1
{
  "name": "楊光1",
  "age": 3,
  "desc": "工資2500",
  "tags": ["直男","溫暖","技術(shù)宅"]
}
# PUT 修改時(shí),會(huì)更新該ID下的所有字段,如果缺失字段,則會(huì)刪除原有字段
put index/_doc/1
{
  "name": "楊光1",
  "age": 3,
  "desc": "工資2500"
}
elasticsearch簡(jiǎn)單入門語法,elasticsearch
更新 POST(推薦)
# POST 更新,會(huì)修改該文檔ID下對(duì)應(yīng)屬性的值
POST index/_update/1
{
  "doc": {
    "name":"楊光3"
  }
}
 
# POST 更新,會(huì)修改該文檔ID下對(duì)應(yīng)屬性的值,不推薦這樣寫,ES8執(zhí)行不支持這種語法
POST index/_doc/1/_update
{
  "doc": {
    "name":"楊光4"
  }
}

?elasticsearch簡(jiǎn)單入門語法,elasticsearch

條件查詢

PUT /index/_doc/1
{
  "name": "楊光",
  "age": 3,
  "desc": "工資2500",
  "tags": ["直男","溫暖","技術(shù)宅"]
}

PUT /index/_doc/2
{
  "name": "張三",
  "age": 30,
  "desc": "沒有工資",
  "tags": ["渣男","旅游","交友"]
}


# 根據(jù)name查詢
GET index/_search?q=name:張三

elasticsearch簡(jiǎn)單入門語法,elasticsearch

PUT index
{
  "mappings": {
    "properties": {
      "name":{
        "type": "keyword"
      },
      "xm":{
        "type": "text",
        "analyzer": "ik_smart"
      },
      "age":{
        "type": "integer"
      },
      "desc":{
        "type": "text"
      },
      "tags":{
        "type": "text"
      }
    }
  }
}
# 測(cè)試數(shù)據(jù)
PUT /index/_doc/1
{
  "name": "楊光",
  "xm": "楊光",
  "age": 3,
  "desc": "工資2500",
  "tags": ["直男","溫暖","技術(shù)宅"]
}

PUT /index/_doc/2
{
  "name": "張三",
  "xm": "張三",
  "age": 30,
  "desc": "沒有工資",
  "tags": ["渣男","旅游","交友"]
}

PUT /index/_doc/3
{
  "name": "李三",
  "xm": "李三",
  "age": 23,
  "desc": "工資5000",
  "tags": ["健身","旅游","購物"]
}

PUT /index/_doc/4
{
  "name": "張三豐",
  "xm": "張三豐",
  "age": 10,
  "desc": "工資5000",
  "tags": ["健身","旅游","購物"]
}

PUT /index/_doc/5
{
  "name": "張",
  "xm": "張",
  "age": 10,
  "desc": "工資5000",
  "tags": ["健身","旅游","購物"]
}

PUT /index/_doc/6
{
  "name": "三",
  "xm": "三",
  "age": 10,
  "desc": "工資5000",
  "tags": ["健身","旅游","購物"]
}
match和term

Match查詢和Term查詢是Elasticsearch中常用的查詢類型,它們有以下區(qū)別:

  1. 匹配方式:

  • Term查詢:對(duì)查詢條件不進(jìn)行分詞,直接按照完全匹配的方式進(jìn)行查詢。

  • Match查詢:對(duì)查詢條件進(jìn)行分詞,然后對(duì)分詞后的詞項(xiàng)進(jìn)行匹配。

  1. 查詢字段類型:

  • Term查詢:適用于精確匹配的字段,如關(guān)鍵字(keyword)類型或未分詞的文本類型(如"張三",不會(huì)被分詞)。

  • Match查詢:適用于全文本字段,如全文本(text)類型或已分詞的文本類型(如"張三 張三",會(huì)被分詞成兩個(gè)詞項(xiàng)"張三")。

  1. 匹配精度:

  • Term查詢:精確匹配,只有完全匹配的詞項(xiàng)才會(huì)被返回。

  • Match查詢:默認(rèn)為詞項(xiàng)級(jí)別的匹配,可以根據(jù)分析器的分詞規(guī)則進(jìn)行模糊匹配。

  1. 執(zhí)行效率:

  • Term查詢:由于不進(jìn)行分詞,查詢速度較快。

  • Match查詢:需要對(duì)查詢條件進(jìn)行分詞,可能會(huì)影響查詢性能。

根據(jù)具體的查詢需求,選擇合適的查詢類型可以提高查詢的準(zhǔn)確性和效率。如果需要精確匹配的查詢,且不需要分詞,可以選擇Term查詢;如果需要對(duì)分詞后的文本進(jìn)行匹配,可以選擇Match查詢。

match查詢
# match 查詢時(shí),會(huì)對(duì)查詢條件先分詞
# 而name字段類型為keyword,不會(huì)分詞,所以只能搜到name=張三的數(shù)據(jù)
GET index/_search
{
  "query": {
    "match": {
      "name": "張三"
    }
  },
  "_source": ["name","xm"]
}
# match 查詢,會(huì)對(duì)查詢條件先分詞
# xm字段類型為text,用ik_max_smart分詞,會(huì)分詞,所以只能搜到文檔xm字段分詞后,結(jié)果為張三分詞后的所有數(shù)據(jù)
GET index/_search
{
  "query": {
    "match": {
      "xm": "張三"
    }
  },
  "_source": ["name","xm"]
}

elasticsearch簡(jiǎn)單入門語法,elasticsearch

?elasticsearch簡(jiǎn)單入門語法,elasticsearch

elasticsearch簡(jiǎn)單入門語法,elasticsearch

term查詢
# term 查詢時(shí),不會(huì)對(duì)查詢條件進(jìn)行分詞,name為keyword,所以只能完全匹配
GET index/_search
{
  "query": {
    "term": {
      "name": "張三"
    }
  }
}
# term 查詢,不會(huì)對(duì)查詢條件進(jìn)行分詞
# xm字段類型為text,用ik_max_smart分詞,會(huì)分詞,所以能查到文檔分詞后為張三的數(shù)據(jù)
GET index/_search
{
  "query": {
    "term": {
      "xm": "張三"
    }
  },
  "_source": ["name","xm"]
}

elasticsearch簡(jiǎn)單入門語法,elasticsearch

?elasticsearch簡(jiǎn)單入門語法,elasticsearch

過濾字段查詢
# 查詢結(jié)果只展示 name和xm兩個(gè)字段
GET index/_search
{
  "_source": ["name","xm"]
}

elasticsearch簡(jiǎn)單入門語法,elasticsearch

排序
# 查詢結(jié)果排序
GET index/_search
{
  "_source": ["name", "age"], 
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ]
}

elasticsearch簡(jiǎn)單入門語法,elasticsearch

分頁查詢
# 分頁查詢
GET index/_search
{
  "_source": ["name", "age"],
  "from": 0,
  "size": 2
}

elasticsearch簡(jiǎn)單入門語法,elasticsearch

多條件查詢(布爾值查詢)
must

類似sql中的 and

# 查詢 name = 張三 并且 age = 30 
GET index/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "張三"
          }
        },
        {
          "match": {
            "age": "30"
          }
        }
      ]
    }
  }
}
should

類似sql中的 or

# 查詢 name = 張三 或者 name = 李三
GET index/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "name": "張三"
          }
        },
        {
          "match": {
            "name": "李三"
          }
        }
      ]
    }
  }
}

elasticsearch簡(jiǎn)單入門語法,elasticsearch

must_not

類似sql中的 not in

# 查詢 name != 張三 并且 name != 李三 
GET index/_search
{
  "query": {
    "bool": {
      "must_not": [
        {
          "match": {
            "name": "張三"
          }
        },
        {
          "match": {
            "name": "李三"
          }
        }
      ]
    }
  }
}

elasticsearch簡(jiǎn)單入門語法,elasticsearch

filter

在Elasticsearch中,過濾器(Filter)是一種用于精確篩選文檔的查詢子句,主要用于限制搜索結(jié)果的范圍。與查詢(Query)不同,過濾器不會(huì)評(píng)分和排序結(jié)果,而是根據(jù)指定的條件進(jìn)行篩選。這可以提高查詢性能,特別是在過濾大量文檔的情況下。

過濾器可以用于各種條件,如范圍查詢、存在性檢查、邏輯運(yùn)算等。常見的過濾器類型包括:

  1. Term Filter:根據(jù)指定的詞項(xiàng)進(jìn)行精確匹配篩選。

  2. Range Filter:通過指定的范圍進(jìn)行篩選,可以用于數(shù)值、日期等字段。

  3. Exists Filter:檢查字段是否存在于文檔中。

  4. Bool Filter:通過邏輯運(yùn)算符(AND、OR、NOT)對(duì)其他過濾器進(jìn)行組合。

  5. Geo Distance Filter:通過指定的地理位置和距離范圍進(jìn)行地理位置過濾。

  6. Script Filter:使用自定義腳本進(jìn)行篩選。

過濾器可以單獨(dú)使用,也可以與查詢結(jié)合使用。如果需要對(duì)搜索結(jié)果進(jìn)行精確的篩選,并且不需要評(píng)分和排序,建議使用過濾器來提高查詢性能。

# 查詢xm=張三,并且age < 30 且 age >= 10 ,并且age 倒序
GET index/_search
{
  "_source": ["xm","age"],
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "xm": "張三"
          }
        }
      ], 
      "filter": [
        {
          "range": {
            "age": {
              "gte": 10,
              "lt": 30
            }
          }
        }
      ]
    }
  },"sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ]
}

# 查詢xm=張三,并且age < 30 且 age >= 10 ,并且 xm 字段值
GET index/_search
{
  "_source": ["xm","age"],
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "xm": "張三"
          }
        }
      ],
      "filter": [
        {
          "range": {
            "age": {
              "gte": 10,
              "lt": 30
            }
          }
        },
        {
          "exists": {
            "field": "xm"
          }
        }
      ]
    }
  }
}

elasticsearch簡(jiǎn)單入門語法,elasticsearch

?elasticsearch簡(jiǎn)單入門語法,elasticsearch

高亮查詢
# 對(duì)搜索結(jié)果命中的字段添加自定義html標(biāo)簽
GET index/_search
{
  "query": {
    "term": {
      "xm": {
        "value": "張三"
      }
    }
  }, 
  "highlight": {
    "pre_tags": "<font color = 'red'>",
    "post_tags": "</font>", 
    "fields": {
      "xm": {}
    }
  },
  "_source": "xm"
}

elasticsearch簡(jiǎn)單入門語法,elasticsearch文章來源地址http://www.zghlxwxcb.cn/news/detail-684974.html

到了這里,關(guān)于elasticsearch簡(jiǎn)單入門語法的文章就介紹完了。如果您還想了解更多內(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高級(jí)查詢語法

    ElasticSearch高級(jí)查詢語法

    當(dāng)數(shù)據(jù)寫入ES時(shí),數(shù)據(jù)將會(huì)通過“分詞”被切分為不同的term,ES將term與其對(duì)應(yīng)的文檔列表建立一種映射關(guān)系,這種結(jié)構(gòu)就是倒排索引。如下圖所示: 為了進(jìn)一步提升索引的效率,ES在term的基礎(chǔ)上利用term的前綴或者后綴構(gòu)建了term index,用于對(duì)term本身進(jìn)行索引,ES實(shí)際的索引結(jié)

    2024年01月20日
    瀏覽(18)
  • elasticsearch 基礎(chǔ)語法

    有index test_user_index 根據(jù)id 獲取doc 根據(jù)doc_id 查詢指定數(shù)據(jù)并根據(jù) 字段 amount 金額sum,id 統(tǒng)計(jì) count,corp_id 去除 根據(jù)字段列舉出字段的所有值 排除 創(chuàng)建別名 修改別名指向

    2024年02月03日
    瀏覽(17)
  • 【ElasticSearch】DSL查詢語法

    【ElasticSearch】DSL查詢語法

    Elasticsearch提供了基于JSON的DSL(Domain Specific Language)來定義查詢。官方文檔: 其中,常見的查詢類型有: 查詢所有 :查詢出所有數(shù)據(jù),一般測(cè)試用。例如: 全文檢索(full text)查詢 :利用分詞器對(duì)用戶輸入內(nèi)容分詞,然后去倒排索引庫中匹配。例如: 精確查詢 :根據(jù)精確

    2024年02月16日
    瀏覽(21)
  • Elasticsearch(一)基本語法命令

    Elasticsearch(一)基本語法命令

    目錄 ? 一、常用操作 二、索引的基本操作 1、創(chuàng)建索引? 2、查詢索引 (查詢索引規(guī)則及其它信息) 3、修改索引 方式1(PUT):舊的方式(不推薦) 方式2(POST):可以只改變部分字段(推薦) 4、刪除索引 三、文檔的基本操作 1、添加數(shù)據(jù) 2、查詢數(shù)據(jù)【簡(jiǎn)單查詢】 1、查詢

    2024年02月12日
    瀏覽(20)
  • 【ElasticSearch】query語法

    介紹ES 的query子句的語法,query子句主要用于編寫查詢條件,類似SQL中的where語句。 query子句主要用來編寫類似SQL的Where語句,支持布爾查詢(and/or)、IN、全文搜索、模糊匹配、范圍查詢(大于小于)。 通過match實(shí)現(xiàn)全文搜索,全文搜索的后面有單獨(dú)的章節(jié)講解,這里大家只要

    2024年02月09日
    瀏覽(24)
  • elasticsearch 查詢語法

    match_all 查詢所有 match 單字段匹配查詢 multi_match 多字段匹配查詢 term 精確查詢 terms 多精確查詢 fuzzy 模糊匹配選擇展示指定字段 過濾字段 includes:來指定想要顯示的字段 excludes:來指定不想要顯示的字段 exists 查詢字段age存在且id等于45的數(shù)據(jù) 組合查詢 排序+分頁

    2023年04月12日
    瀏覽(15)
  • ElasticSearch - DSL查詢語法

    ElasticSearch - DSL查詢語法

    目錄 DSL查詢分類 全文檢索查詢 精確查詢 地理查詢 復(fù)合查詢 相關(guān)性算分 算分函數(shù)查詢 BooleanQuery DSL查詢分類 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)來定義查詢 常見的查詢類型包括: 查詢所有:查詢出所有的數(shù)據(jù),一般測(cè)試用;例如:match_all 全文檢索(full text)查詢

    2023年04月08日
    瀏覽(41)
  • 二、ElasticSearch基礎(chǔ)語法

    這個(gè)是底層自帶的不屬于ik分詞,ik分詞器屬于第三方分詞器 效果(把每一個(gè)字都拆分,每個(gè)字都被分詞了) 和單字分詞器的區(qū)別,就是按照比較粗的粒度去分詞,把搜索引擎當(dāng)成一個(gè)詞來分詞 效果 按照最細(xì)粒度進(jìn)行分詞,把認(rèn)為能組成一個(gè)詞的情況都拆分。 效果 創(chuàng)建一個(gè)

    2023年04月09日
    瀏覽(17)
  • ElasticSearch DSL語法

    ElasticSearch DSL語法

    一、文檔批量操作 1.批量獲取文檔數(shù)據(jù) 批量獲取文檔數(shù)據(jù)是通過_mget的API來實(shí)現(xiàn)的 (1)在URL中不指定index和type 請(qǐng)求方式:GET 請(qǐng)求地址:_mget 功能說明 : 可以通過ID批量獲取不同index和type的數(shù)據(jù) 請(qǐng)求參數(shù): docs : 文檔數(shù)組參數(shù) _index : 指定index _type : 指定type(7.x的版本不推薦使

    2024年03月16日
    瀏覽(53)
  • ElasticSearch【query語法】

    介紹ES 的query子句的語法,query子句主要用于編寫查詢條件,類似SQL中的where語句。 query子句主要用來編寫類似SQL的Where語句,支持布爾查詢(and/or)、IN、全文搜索、模糊匹配、范圍查詢(大于小于)。 通過match實(shí)現(xiàn)全文搜索,全文搜索的后面有單獨(dú)的章節(jié)講解,這里大家只要

    2024年02月08日
    瀏覽(29)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包