Elasticsearch屬性單詞常用解析說(shuō)明
一、前言
說(shuō)實(shí)話(huà),剛測(cè)試ES的時(shí)候,我的內(nèi)心是崩潰的,好多單詞都不知道代表什么意思,只能一邊測(cè)試,一邊查詢(xún)。看到就趕緊記下來(lái),一天下來(lái),也算是學(xué)的七七八八吧。這里分享給大家。
二、ES常見(jiàn)單詞解釋
1、url請(qǐng)求中的參數(shù):
curl -XPOST 'localhost:9200/bank/type1/_search?pretty' -d ' { "query": { "match_all": {} } }' (1)9200后面的bank是索引名字 (2)type1代表es的type,類(lèi)似于傳統(tǒng)數(shù)據(jù)庫(kù)的table (3)pretty:pretty是將返回的信息以可讀的JSON形式返回
2、_source字段:
這個(gè)字段代表是否存儲(chǔ)在原始文檔。如果設(shè)置為true,那么查詢(xún)之后,會(huì)在hits.hits里面有個(gè)_source數(shù)組,展示原始文檔。
_source可以限制存儲(chǔ)部分字段,或者不存儲(chǔ)部分字段,形如:
"yourtype":{ "_source":{ "includes":["field1","field2"] //這兩個(gè)字段會(huì)存儲(chǔ)在原始文檔 }, "properties": { ... } } "yourtype":{ "_source":{ "excludes":["field1","field2"] //這兩個(gè)字段不會(huì)存儲(chǔ)在原始文檔 }, "properties": { ... } }
3、_all的配置:
這個(gè)屬性的配置方法和_source類(lèi)似,它是把一個(gè)文檔里面的所有信息都放到一起組合成一個(gè)大字段。我們可以設(shè)置這個(gè)字段包含所有的字段,也可以設(shè)置只包含幾個(gè)字段,或者是只存儲(chǔ)幾個(gè)字段
(1)包含所有字段
"yourtype": { "_all": { "enabled": true //這樣設(shè)置的話(huà),就包含了所有的字段 },}
(2)包含或者不包含部分字段
"yourtype": { "properties": { "field1": { "type": "string", "include_in_all": false //這個(gè)字段不包含在_all }, "field2": { "type": "string", "include_in_all": true //這個(gè)字段包含在_all } } }
4、highlight 高亮顯示:
這個(gè)字段類(lèi)似于咱們百度的時(shí)候,符合預(yù)期文字的部分都會(huì)高亮顯示出紅色來(lái)
(1)可以在查詢(xún)時(shí)指定高亮字段或者全部高亮
"query": { "match": { "_all": "中國(guó)人" } }, "highlight": { "fields": { //"_all": {} //這是對(duì)_all字段進(jìn)行高亮查詢(xún) //"title": {} //這是對(duì)title字段進(jìn)行高亮顯示 } }
5、設(shè)置字段的index屬性。
這個(gè)屬性是控制該字段是否生成倒排索引,取值主要有三個(gè):
(1)analyzed:字段被索引,會(huì)做分詞,可搜索。反過(guò)來(lái),如果需要根據(jù)某個(gè)字段進(jìn)搜索,index屬性就應(yīng)該設(shè)置為analyzed。 (2)not_analyzed:字段值不分詞,會(huì)被原樣寫(xiě)入索引。反過(guò)來(lái),如果某些字段需要完全匹配,比如人名、地名,index屬性設(shè)置為not_analyzed為佳。 (3)no:字段不寫(xiě)入索引,當(dāng)然也就不能搜索。反過(guò)來(lái),有些業(yè)務(wù)要求某些字段不能被搜索,那么index屬性設(shè)置為no即可。
類(lèi)似于:
(1)analyzed:字段被索引,會(huì)做分詞,可搜索。反過(guò)來(lái),如果需要根據(jù)某個(gè)字段進(jìn)搜索,index屬性就應(yīng)該設(shè)置為analyzed。 (2)not_analyzed:字段值不分詞,會(huì)被原樣寫(xiě)入索引。反過(guò)來(lái),如果某些字段需要完全匹配,比如人名、地名,index屬性設(shè)置為not_analyzed為佳。 (3)no:字段不寫(xiě)入索引,當(dāng)然也就不能搜索。反過(guò)來(lái),有些業(yè)務(wù)要求某些字段不能被搜索,那么index屬性設(shè)置為no即可。
6、store屬性:
用于指定是否將原始字段寫(xiě)入索引,默認(rèn)取值為no。
因?yàn)樵贚ucene中,高亮功能和store屬性是否存儲(chǔ)息息相關(guān),因?yàn)樾枰鶕?jù)偏移位置到原始文檔中找到關(guān)鍵字才能加上高亮的片段。在Elasticsearch,因?yàn)開(kāi)source中已經(jīng)存儲(chǔ)了一份原始文檔,可以根據(jù)_source中的原始文檔實(shí)現(xiàn)高亮,在索引中再存儲(chǔ)原始文檔就多余了,所以Elasticsearch默認(rèn)是把store屬性設(shè)置為no。
注意: 如果想要對(duì)某個(gè)字段實(shí)現(xiàn)高亮功能,_source和store至少保留一個(gè)。
參考:https://blog.csdn.net/mlljava1111/article/details/70598481
7、took :該請(qǐng)求花了多少毫秒 (took)
8、_shards:
描述了查詢(xún)分片的信息,查詢(xún)了多少個(gè)分片、成功的分片數(shù)量、失敗的分片數(shù)量等猜測(cè)這個(gè)字段代表該次查詢(xún),獲取數(shù)據(jù)經(jīng)過(guò)的分片數(shù)量之和
9、hits:
搜索的結(jié)果,total是全部的滿(mǎn)足的文檔數(shù)目,hits是返回的實(shí)際數(shù)目(默認(rèn)是10)
10、max_score和_score :
代表的是查詢(xún)結(jié)果的評(píng)分值,分越高,代表權(quán)重越大,排名越靠前。具體的參考:
https://blog.csdn.net/paditang/article/details/79098830
有的時(shí)候我們可能對(duì)分?jǐn)?shù)不感興趣,就可以使用filter進(jìn)行過(guò)濾,它不會(huì)去計(jì)算分值,因此效率也就更高一些
11、Routing:Elasticsearch的路由機(jī)制
我們可以通過(guò)制定路由,而避免ES自己進(jìn)行大量的廣播操作。直接按照我們制定的路由找到對(duì)應(yīng)的分片查詢(xún),關(guān)于路由機(jī)制,我們不做贅述,只是了解下就行。
具體請(qǐng)參考:https://blog.csdn.net/cnweike/article/details/38531997
12、term和trems:
這兩個(gè)是精準(zhǔn)查找,一個(gè)是單數(shù),一次查找單個(gè)值。一個(gè)是復(fù)數(shù),一次查找多個(gè)值。
例如:"terms" : { "price" : [20, 30] }
13、先看個(gè)語(yǔ)句:
GET _search { "query": { "filtered": { "query": { "match": { "text": "quick brown fox" } }, "filter": { "term": { "status": "published" } } } } }
(1) 這里的"filtered": 從ES5.0之后被移除了。
(2) filter代表過(guò)濾匹配,也是為了過(guò)濾status字段,讓它不去計(jì)算的分?jǐn)?shù),不用計(jì)算權(quán)重等。
新的語(yǔ)句為:
GET _search { "query": { "bool": { "must": { "match": { "text": "quick brown fox" } }, "filter": { "term": { "status": "published" } } } } }
(3) bool代表的是bool查詢(xún),參數(shù)主要有:
must 所有的語(yǔ)句都 必須(must) 匹配,與 AND 等價(jià)。 must_not 所有的語(yǔ)句都 不能(must not) 匹配,與 NOT 等價(jià)。 should 至少有一個(gè)語(yǔ)句要匹配,與 OR 等價(jià)
到此這篇關(guān)于Elasticsearch屬性單詞常用解析說(shuō)明的文章就介紹到這了,更多相關(guān)Elasticsearch屬性單詞解析內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java使用elasticsearch基礎(chǔ)API使用案例講解
- Django對(duì)接elasticsearch實(shí)現(xiàn)全文檢索的示例代碼
- 解決Elasticsearch因jdk版本問(wèn)題啟動(dòng)失敗的問(wèn)題
- spring-data-elasticsearch @Field注解無(wú)效的完美解決方案
- Elasticsearch中store field與non-store field的區(qū)別說(shuō)明
- Elasticsearch 映射參數(shù)詳解 fields
- 基于ElasticSearch Analyzer的使用規(guī)則詳解
- Java elasticSearch-api的具體操作步驟講解
相關(guān)文章
PHP中使用ElasticSearch最新實(shí)例講解
這篇文章主要介紹了PHP中使用ElasticSearch最新實(shí)例講解,這篇文章的教程是比較詳細(xì),有需要的同學(xué)可以研究下2021-03-03ThinkPHP模板循環(huán)輸出Volist標(biāo)簽用法實(shí)例詳解
這篇文章主要介紹了ThinkPHP模板循環(huán)輸出Volist標(biāo)簽用法,結(jié)合實(shí)例形式詳細(xì)分析了Volist標(biāo)簽的功能,使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-03-03PHP的error_reporting錯(cuò)誤級(jí)別變量對(duì)照表
這篇文章主要介紹了PHP的error_reporting錯(cuò)誤級(jí)別變量對(duì)照表,需要的朋友可以參考下2014-07-07Zend Framework實(shí)現(xiàn)多服務(wù)器共享SESSION數(shù)據(jù)的方法
這篇文章主要介紹了Zend Framework實(shí)現(xiàn)多服務(wù)器共享SESSION數(shù)據(jù)的方法,詳細(xì)分析了SESSION數(shù)據(jù)共享的原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-03-03Mac系統(tǒng)下搭建Nginx+php-fpm實(shí)例講解
這篇文章主要介紹了Mac系統(tǒng)下搭建Nginx+php-fpm實(shí)例講解,不懂mac系統(tǒng)下如何搭建php環(huán)境的小伙伴可以跟隨小編一起來(lái)學(xué)習(xí)研究下吧2020-12-12Yii 框架控制器創(chuàng)建使用及控制器響應(yīng)操作示例
這篇文章主要介紹了Yii 框架控制器創(chuàng)建使用及控制器響應(yīng)操作,結(jié)合實(shí)例形式分析了Yii框架控制器調(diào)用、參數(shù)傳遞與響應(yīng)相關(guān)操作技巧,需要的朋友可以參考下2019-10-10Smarty模板常見(jiàn)的簡(jiǎn)單應(yīng)用分析
這篇文章主要介紹了Smarty模板常見(jiàn)的簡(jiǎn)單應(yīng)用,結(jié)合實(shí)例形式分析了Smarty模板的引入、創(chuàng)建、設(shè)置及相關(guān)的常見(jiàn)使用技巧,需要的朋友可以參考下2016-11-11php中的curl使用入門(mén)教程和常見(jiàn)用法實(shí)例
起先cURL是做為一種命令行工具設(shè)計(jì)出來(lái)的,比較幸運(yùn)的是,php也支持cURL了。通過(guò)cURL這個(gè)利器,我們能在php程序中自由地發(fā)送HTTP請(qǐng)求到某個(gè)url來(lái)獲取或者提交數(shù)據(jù),并且支持其它多種協(xié)議,比如FTP,Telnet以及SMTP等。在這篇博文中,我將簡(jiǎn)述下,在php中具體怎么使用cURL來(lái)處理一些事情。2014-04-04在swoole中制作一款仿制laravel的框架的實(shí)例代碼
這篇文章主要介紹了在swoole中制作一款仿制laravel的框架,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03