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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

ES搜索引擎增删改查操作

發布時間:2023/12/4 综合教程 27 生活家
生活随笔 收集整理的這篇文章主要介紹了 ES搜索引擎增删改查操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

ES查詢操作

match查詢

ES索引操作

創建索引

ES添加修改操作

添加操作

修改操作

ES刪除操作

刪除索引

刪除document


es概述:Es搜索引擎概述和語句案例_派大猩9527的博客-CSDN博客

ES查詢操作

精確查找(全詞匹配)?

term查詢不會對查詢語句進行分詞,而是精確的去匹配結構化數據中的字段值。

GET /索引名/_search
{
? "query": {
? ? "term": {
? ? ? ? ? "id": 67
? ? }
? }
}

精確查找多個值(全詞匹配)

GET /索引名/_search
{
? "query": {
? ? "terms": {
? ? ? "id": [
? ? ? ? 67,
? ? ? ? 68
? ? ? ]
? ? }
? }
}

范圍查詢 range

GET /索引名/_search
{
? "query": {
? ? "range": {
? ? ? "last_loading_time": {
? ? ? ? "gte": "2022-02-15",
? ? ? ? "lte": "2022-02-17"
? ? ? }
? ? }
? }
}

geo_distance半徑查詢

GET /索引名/_search
{
? "query": {
? ? "geo_distance": {
? ? ? "distance": "30km",
? ? ? "索引字段名": {
? ? ? ? ?"lon" : 120.126629,
? ? ? ? ?"lat" : 31.799108
? ? ? }
? ? }
? },

#排序
? "sort": [
? ? {
? ? ? ?"_geo_distance": {
? ? ? ? "索引字段名": {
? ? ? ? ? "lon" : 120.126629,
? ? ? ? ? ?"lat" : 31.799108
? ? ? ? ? },
? ? ? ? "order": ? ? ? ? "asc",
? ? ? ? "unit": ? ? ? ? ?"km"
? ? ? }
? ? }
? ]
}

match查詢

match查詢知道分詞器的存在,會對field進行分詞操作,然后再查詢。

match_all (查詢索引全部數據)

GET /索引名/_search
{
? "query": {
? ? "match_all": {}
? }
}

示例:

返回:

?

?查詢默認最大顯示 一萬條,如果要total.value顯示當前索引的全部文檔數需要加下列條件

"track_total_hits": true

示例:

返回顯示:

match查詢

舉個例子,你可以使用?match?查詢語句 來查詢?tweet?字段中包含?elasticsearch?的 tweet,所有有關"elasticsearch?", 那么所有包含這個詞中的一個或多個的文檔就會被搜索出來。并且根據lucene的評分機制(TF/IDF)來進行評分。對Text類型字段,索引時會進行分詞,大寫字母會轉成小寫等,一般都用match搜索。

查詢附帶字段:

operator:匹配條件類型,有兩個值,and:條件分詞后都要匹配,or:條件分詞后有一個匹配即可(默認)。

minmum_should_match:指定最小匹配的數量。

GET /索引名/_search
{
? "query": {
? ? "match": {
? ? ? ? "tweet": "elasticsearch?"
? ? }
? }
}

match查詢多個字段

GET /bank/_search
{    "query": {     "must": [{   "match": {   "title": "Search"   }  },  {   "match": {   "content": "Elasticsearch"   }  }]}
}

match_phrase查詢

match_phrase查詢首先解析查詢字符串來產生一個詞條列表。然后會搜索所有的詞條,但只保留包含了所有搜索詞條的文檔,并且詞條的位置要鄰接。

GET /索引名/_search
{
? "query": {
? ? "match_phrase": {
? ? ? "name": {
? ? ? ? "query": "lonely wolf"
? ? ? }
? ? }
? }
}

要完全匹配“lonely wolf”的文檔才會被搜索出來。這種比較嚴格,可以用slop來調節,slop值越大,搜索的順序可以忽略不計。ElasticSearch中一般情況下如果不希望被分詞可以使用match_phrase進行搜索。

multi_match查詢

es中如果我們希望兩個字段進行匹配,其中一個字段有這個文檔就滿足的話,使用multi_match。multi_match多匹配查詢的類型有多種,其中的三種: best_fields 、 most_fields 和 cross_fields (最佳字段、多數字段、跨字段)。默認情況下,查詢的類型是 best_fields?。

可設置參數:

tie_breaker:在0~1之間,是個小數,在于說,將其他query的分數,乘以tie_breaker,然后綜合與最高分數的那個query的分數,綜合在一起進行計算,除了取最高分以外,還會考慮其他的query的分數。

minimum_should_match:最小匹配度,表示如果可選子句的數量等于(或小于)設置的值,則它們都是必需的,但如果它大于設置的值,則適用規范。

GET /索引名/_search
{
? "query": {
? ? ?"multi_match": {
? ? ?"query": "無錫正天",
? ? ?"fields": ["logisticsLineCompanyName","logisticsLineAddress"],
? ? ?"type": "best_fields",
? ? ?"tie_breaker": 0,
? ? ?"minimum_should_match":1
? ? }
? }
}

ES索引操作

創建索引

創建一個不帶mapping的索引

PUT /索引名

創建索引設置索引及分片

PUT /索引名
{
? "settings": {
? ? "number_of_shards": 3,
? ? "number_of_replicas": 0
? }
}

修改索引setting副本數(number_of_shards 分片數量不可修改)

PUT /索引名/_settings {

"number_of_replicas": 2

}

創建帶有靜態映射類型的索引

PUT 索引名
{
? "settings": {
? ? "number_of_shards": 5,
? ? "number_of_replicas": 2
? },
? "mappings": {
? ? "crawl_article": {
? ? ? "_all": {
? ? ? ? "enabled": false
? ? ? },
? ? ? "properties": {
? ? ? ? "summary": {
? ? ? ? ? "search_analyzer": "ik_smart",
? ? ? ? ? "similarity": "BM25",
? ? ? ? ? "analyzer": "ik_max_word",
? ? ? ? ? "type": "text"
? ? ? ? },
? ? ? ? "title": {
? ? ? ? ? "search_analyzer": "ik_smart",
? ? ? ? ? "similarity": "BM25",
? ? ? ? ? "analyzer": "ik_max_word",
? ? ? ? ? "type": "text"
? ? ? ? },
? ? ? ? "content": {
? ? ? ? ? "search_analyzer": "ik_smart",
? ? ? ? ? "similarity": "BM25",
? ? ? ? ? "analyzer": "ik_max_word",
? ? ? ? ? "type": "text"
? ? ? ? }
? ? ? }
? ? }
? }
}

修改已創建的索引的mapping(如果mapping已有該字段則不能改變)

PUT 索引名/_mapping?
{
? "properties": {
? ? "字段1": {
? ? ? "type": "text",? ? ?//字段類型
? ? ? "fields":{
? ? ? ? "keyword":{
? ? ? ? ? "type":"keyword",
? ? ? ? ? "ignore_above": 256
? ? ? ? }
? ? ? }
? ? },

? ? 字段2:{
? ? ? "type": "text"
? ? },
? ? 字段3:{
? ? ? ?"type": "text",

? ? ? ?"index":false //索引方式、是否分析
? ? }
? }
}

示例:

?

?

返回結果

?

ES的文檔字段可設置屬性

boost

查詢時提高字段的相關性算分,得分越高在查詢結果集中排名越靠前,boost?可以指定其分數(權重),默認 1.0。

analyzer

字段分詞器,默認為?standard,可以指定第三方的分詞器。

dynamic

創建索引時,索引中字段是固定的,該屬性可以決定是否允許新增字段,有三種狀態A:

1)true:允許新增,es會為新的字段自動添加mapping類型。

2)false:允許新增,不會自動添加映射關系,但是不能作為主查詢查詢(查詢不到具體的新增字段)。

3)strict:嚴格模式,不可以新增字段,新增就報錯,需要重新設計索引。

ignore_above

超過ignore_above設置的字符串將不會被索引或存儲,對于字符串數組,ignore_above將分別應用于每個數組元素,并且字符串元素,ignore_above將不會被索引或存儲。

查詢超過設置的數據

插入一條

?

?

查詢

??

返回

?

?fields

允許為字段設置子字段,可以有多個。

?

查看某個索引的映射結構

Get? ?/索引名/_mapping

?

返回

?

查看某個字段的分詞結果

GET /{index}/{type}/{id}/_termvectors?fields={fieldName}?

?

返回(部分結果)

??

ES添加修改操作

添加操作

#不指定ID (ES會自動生成id)

POST /索引名/_doc/
{
? "字段1":"yh",
? "字段2":24??

? ?.........
}

#指定id

POST /索引名/_doc/1(id)
{
? "字段1":"yh2",
? "字段2":24
}

修改操作

1)會覆蓋當前id的數據

PUT /索引名/_doc/1(指定id)
{
? "字段1":"修改值"
}

2)修改部分字段

POST /index/_update/id
{
? "doc":{
? ? "age":22
? }
}

?

??

ES刪除操作

刪除索引

刪除指定索引

DELETE /索引名

刪除document

單條document根據id刪除

DELETE /索引名/_doc/ID

根據條件刪除

POST 索引名/_delete_by_query
{
? "query": {
? ? "match_all": {
? ??
? ? ?}
? }
}

?

?

總結

以上是生活随笔為你收集整理的ES搜索引擎增删改查操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。