中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

國外做節(jié)目包裝的網站網上做推廣怎么收費

國外做節(jié)目包裝的網站,網上做推廣怎么收費,簡約 網站模板,寧波市城市建設檔案館網站一、ES數(shù)據(jù)基礎類型 1、數(shù)據(jù)類型 字符串 主要包括: text和keyword兩種類型,keyword代表精確值不會參與分詞,text類型的字符串會參與分詞處理 數(shù)值 包括: long, integer, short, byte, double, float 布爾值 boolean 時間 date 數(shù)組 數(shù)組類型不…

一、ES數(shù)據(jù)基礎類型

1、數(shù)據(jù)類型

字符串

主要包括: text和keyword兩種類型,keyword代表精確值不會參與分詞,text類型的字符串會參與分詞處理

數(shù)值

包括: long, integer, short, byte, double, float

布爾值

boolean

時間

date

數(shù)組

數(shù)組類型不需要專門定義,只要插入的字段值是json數(shù)組就行

GEO類型

主要涉及地理信息檢索、多邊形區(qū)域的表達

2、text&keyword使用注意

text類型,支持全文搜索,因為text涉及分詞,所以可以配置使用什么分詞器,尤其涉及中文分詞。

實際項目中,如果不需要模糊搜索的字符類型,可以選擇keyword類型,例如:手機號、email、微信的openid等等,如果選text類型,可能會出現(xiàn)搜出一大堆相似的數(shù)據(jù),而且不是精確的數(shù)據(jù)。

二、query語法

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

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

其中:text類型字段支持分詞,可以使用模糊查詢。keyword類型只能做等值查詢,不能進行分詞。

1、match類like匹配

1.1?match匹配單個字段

使用match實現(xiàn)全文搜索。類似于SQL中的like操作。

簡單使用的語法:

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

說明:
{FIELD} - 就是我們需要匹配的字段名
{TEXT} - 就是我們需要匹配的內容

例子:

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

article索引中,title字段匹配“ES教程”的所有文檔。

如果title字段的數(shù)據(jù)類型是text類型,搜索關鍵詞會進行分詞處理。

等價SQL(假設"ES教程"沒有進行分詞):

select * from article where title like '%ES教程%'

1.2 multi_match多字段匹配

例子:

GET /article/_search
{"query": {"multi_match": {"query": "斯柯達前輪制動器","fields":["doc_title","doc_content"]}}
}

等價SQL:

select * from article where doc_title like '%<斯柯達前輪制動器的分詞>%' or doc_content like '%<斯柯達前輪制動器的分詞>%'

因為?斯柯達前輪制動器的分詞 會有很多,所以實際上也會有很多的like,而不僅僅是上面的兩個like。

1.3 multi_phrase順序匹配

match_phrase查詢是ES中一種用于精確匹配短語的查詢方式,可以確保查詢字符串中的關鍵詞按照給定的順序在文檔中連續(xù)出現(xiàn)。

說明:檢索詞還是進行分詞的,分詞后的各個單詞的順序在 被檢索的文中是一樣的。

例子:

GET /article/_search
{"query": {"match_phrase": {"doc_content": "制動器裝配"}}
}

搜索結果:

1.4 operator的布爾操作?

指定分詞匹配的布爾規(guī)則,默認情況下operator為or,即分詞中有一個匹配即可。

當operator為and時,需要文檔匹配所有的分詞。

例子:

GET demo_idx/_search
{"query": {"match": {"content": {"query": "simple rest apis distributed nature","operator": "and"}}}
}

1.5 結合operator、boost及match_phrase的查詢

我們希望精確匹配在搜索結果中排名較高,但也希望看到結果中相關性較低的文檔,此時使用should子句來組合OR、AND和match短語查詢。布爾查詢中的should子句采用更好匹配的方法,因此每個子句的得分將為每個文檔的最終_score做出貢獻。

GET demo_idx/_search
{"query": {"bool": {"should": [{"match": {"content": {"query": "simple rest apis distributed nature"}}},{"match": {"content": {"query": "simple rest apis distributed nature","operator": "and"}}},{"match_phrase": {"content": {"query": "simple rest apis distributed nature","boost": 2}}}]}}
}

2、term精確匹配單個字段

使用term實現(xiàn)精確匹配。

如果想要類似SQL語句中的等值匹配,不需要進行分詞處理,例如:訂單號、手機號、時間字段,不需要分值處理,只要精確匹配。

語法:

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

{FIELD} - 就是我們需要匹配的字段名
{VALUE} - 就是我們需要匹配的內容,除了TEXT類型字段以外的任意類型

例子:

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

搜索訂單號order_no = "202003131209120999"的文檔。

類似SQL語句:

select * from order_v2 where order_no = "202003131209120999"

3、terms實現(xiàn)SQL的in語句

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

語法:

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

說明:

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

例子:

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

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

類似SQL語句:

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

4、range范圍查詢

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

語法:

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

參數(shù)說明:

{FIELD} - 字段名

gte范圍參數(shù) - 等價于>=

lte范圍參數(shù) - 等價于 <=

范圍參數(shù)可以只寫一個,例如:僅保留 “gte”: 10, 則代表 FIELD字段 >= 10

范圍參數(shù)如下:

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

例子:

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

5、bool組合查詢

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

5.1 bool查詢基本語法結構

語法:

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

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

同時,前面介紹的單個字段的匹配語句,都可以用在bool查詢語句中進行組合。

5.2 must條件

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

語法:

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

例子:

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

這里的Must條件,使用了term精確匹配,等價SQL:

select * from order_v2 where order_no="202003131209120999" and shop_id=123

5.3 must_not條件

跟must的作用相反,語法類似。

5.4 should條件

類似SQL中的 or, 只要匹配其中一個條件即可。

語法:

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

例子:

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

等價SQL:

select * from order_v2 where order_no="202003131209120999" or order_no="22222222222222222"

5.5 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]}}]}}
}

等價SQL:

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

6、wildcard通配符查詢

wildcard 關鍵字: 通配符查詢 ? 用來匹配一個任意字符 * 用來匹配多個任意字符。

例子:

GET /xizi/emp/_search{"query": {"wildcard": {"name": {"value": "xi*"}}}}

7、fuzzy模糊查詢

fuzzy 模糊查詢,最大模糊錯誤必須在0-2之間 ?

搜索關鍵詞長度為 2 不允許存在模糊 0

?搜索關鍵詞長度為3-5 允許一次模糊 0 1 ?

搜索關鍵詞長度大于5 允許最大2模糊

例子:

GET /xizi/emp/_search{"query": {"fuzzy": {"name":"xizi"}}}

8、額外限制條件

8.1 _source指定返回字段

例子1:

get lib3/user/_search
{"_source":["name","age"],"query":{"match": {"interests": "changge"}}

結果只返回索引中name和age字段信息

例子2:

get lib3/user/_search
{"query":{"match_all": {}},"_source":{"includes": "addr*","excludes": ["name","bir*"]}
}

顯示要的字段、去除不需要的字段、可以使用通配符*。

8.2 boost查詢的權重

boost值控制每個查詢子句的相對權重,該值默認為1。

boost參數(shù)被用來增加一個子句的相對權重(當boost大于1時),或者減小相對權重(當boost介于0到1時),但是增加或者減小不是線性的。換言之,boost設為2并不會讓最終的_score加倍。

例子:

GET/_search{"query": {"bool": {"must": {"match": {"content": {"query": "full text search","operator": "and"}}},"should": [{"match": {"content": {"query": "Elasticsearch","boost": 3}}},{"match": {"content": {"query": "Lucene","boost": 2}}}]}}
}

8.3?min_similarity設置匹配的最小相似度

8.4 highlight高亮搜索結果

例子:

get data_info/_search
{"_source":["doc_title","doc_content"],"query": {"match": {"doc_content": "斯柯達前輪制動器"}},"highlight":{"fields":{"doc_content":{}}}
}

返回結果:

8.5 size指定返回條數(shù)

ES默認返回10條結果。

例子:

get data_info/_search
{"query": {"match": {"doc_content": "斯柯達前輪制動器"}},"size": 2
}

結果中只有2條信息。

8.6 from分頁查詢

from 關鍵字: 用來指定起始返回位置,和size關鍵字連用可實現(xiàn)分頁效果。

例子:

get data_info/_search
{"query": {"match": {"doc_content": "斯柯達前輪制動器"}},"size": 2,"from": 3
}

8.7 sort指定字段排序

使用該屬性會讓得分失效

例子:

GET /db_idx4/_search
{"query":{"match_all":{}},"sort":[{"age":"desc"}]
}

8.8 explain查看分數(shù)計算詳情

ES提供了一個解釋性API和一個解釋性查詢參數(shù)以了解如何計算分數(shù)。

例子:

GET /db_idx4/_search
{"explain": true,"query": {"match_phrase": {"doc_content": "制動器裝配"}}
}

結果示例:

三、全文搜索

1、概念

平時我們使用SQL like語句搜索一些文本、字符串是否包含指定的關鍵詞,如果兩篇文章都包含我們的關鍵詞,那么具體哪篇文章內容的相關度更高?這個SQL的like語句是做不到的,更別說like語句的性能問題了。

ES通過分詞、相關度計算可以解決這個問題,ES內置了一些相關度算法,大致上意思是:如果一個關鍵詞在一篇文章出現(xiàn)的頻率高,并且在其他文章中出現(xiàn)少,那說明這個關鍵詞與這篇文章的相關度很高。

ES對于text類型的字段,在插入數(shù)據(jù)的時候,會進行分詞處理,然后根據(jù)分詞的結果索引文檔,當我們搜索text類型字段的時候,也會先對搜索關鍵詞進行分詞處理、然后根據(jù)分詞的結果去搜索。

2、文檔評分計算

2.1 默認評分影響因素

ES使用的默認評分算法是BM25,決定文檔得分的3個主要因素:

  • 字詞頻率(TF):搜索字詞在我們正在搜索的文檔中的字段中出現(xiàn)的次數(shù)越多,則該文檔越相關
  • 反向文檔頻率(IDF):在我們要搜索的字段中包含搜索詞的文檔越多,該詞的重要性就越低
  • 字段長度:如果文檔在非常短的字段(即,只有幾個單詞)中包含搜索詞,則比文檔在較長的字段(即,包含很多單詞)中包含搜索詞更相關

2.2 使用function_score和script_score定制搜索結果分數(shù)

function_score和script_score是很耗資源的,所以實際使用時只需要計算一組經過過濾的文檔的分數(shù)。

script_score定制的例子:

GET best_games/_search
{"_source": ["name","critic_score","user_score"],"query": {"script_score": {"query": {"match": {"name": "Final Fantasy"}},"script": {"source": "_score * (doc['user_score'].value*10+doc['critic_score'].value)/2/100"}}}
}

具體細節(jié)參考:Elasticsearch:使用 function_score 及 script_score 定制搜索結果的分數(shù)-CSDN博客

?

3、分詞效果測試

語法:

GET /_analyze
{"text": "需要分詞的內容","analyzer": "分詞器"
}

例子:

GET http://xx.elasticsearch.aliyuncs.com:9200/_analyze
{"text":"上海大學","analyzer": "standard"
}

使用standard分詞器,對"上海大學"進行分詞,下面是輸出結果:

{"tokens": [{"token": "上","start_offset": 0,"end_offset": 1,"type": "<IDEOGRAPHIC>","position": 0},{"token": "海","start_offset": 1,"end_offset": 2,"type": "<IDEOGRAPHIC>","position": 1},{"token": "大","start_offset": 2,"end_offset": 3,"type": "<IDEOGRAPHIC>","position": 2},{"token": "學","start_offset": 3,"end_offset": 4,"type": "<IDEOGRAPHIC>","position": 3}]
}

token就是分解出來的關鍵詞。

四、難點剖析

1、filter與must的區(qū)別

同樣是按條件匹配,filter不統(tǒng)計相關度,must統(tǒng)計相關度。就是filter不計算score分數(shù)值,而must是計算的。所以must比filter計算更復雜、更耗時。

具體參考:Elasticsearch Query: filter與must的區(qū)別_elasticsearch must 和filter的區(qū)別-CSDN博客

http://www.risenshineclean.com/news/1772.html

相關文章:

  • 2015年做啥網站能致富廣告推廣一個月多少錢
  • 青海高端網站建設價格長沙網紅打卡景點排行榜
  • 網站備案查詢 whois百度網站提交
  • 網站開發(fā)預算報表企點官網
  • 查排名的軟件有哪些關于華大18年專注seo服務網站制作應用開發(fā)
  • wap網站制作開發(fā)公司成品人和精品人的區(qū)別在哪
  • 政府網站的欄目建設小程序免費制作平臺
  • 網站建設費做什么會計科目百度收錄怎么弄
  • 阿里云網站黃桃圖片友情鏈接
  • 上傳網站安裝教程上海搜索引擎推廣公司
  • wordpress中聯(lián)系表網站如何優(yōu)化流程
  • 青島網站建設多少錢seo是什么意思中文
  • 網站做代理服務器市場營銷考試題目及答案2022
  • asp動態(tài)網站建設答辯上海seo優(yōu)化培訓機構
  • 境外建網站網絡推廣平臺有哪些?
  • 武漢武漢最新優(yōu)化seo教程
  • 域名做網站出售合法嗎最強大的搜索引擎
  • 國外做化工產品的網站好的在線crm系統(tǒng)
  • 學校的二級網站怎么建設百度網頁
  • 深圳網站制作品牌祥奔科技數(shù)字營銷包括哪六種方式
  • 馬蜂窩網站做的重點怎么設置自己的網站
  • 網站開發(fā)中文改成英文廣州網站優(yōu)化方式
  • 網站平臺開發(fā)報價表怎么做深圳網絡推廣平臺
  • 怎么做整蠱網站樂天seo培訓
  • 北京優(yōu)質網站制作電商運營培訓課程有哪些
  • 房地產建筑公司網站百度查一下
  • 上海網站se0優(yōu)化公司宣傳推廣方案范文
  • 網站建設和網絡推廣外包服務商seo超級外鏈發(fā)布
  • 奇米網怎么做網站百度鏈接提交收錄入口
  • 施工企業(yè)負責人帶班檢查計劃汕頭百度seo公司