這篇文章主要介紹Elasticsearch屬性單詞有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
curl -XPOST 'localhost:9200/bank/type1/_search?pretty' -d '
{
"query": { "match_all": {} }
}'
(1)9200后面的bank是索引名字
(2)type1代表es的type,類似于傳統數據庫的table
(3)pretty:pretty是將返回的信息以可讀的JSON形式返回 這個字段代表是否存儲在原始文檔。如果設置為true,那么查詢之后,會在hits.hits里面有個_source數組,展示原始文檔。
_source可以限制存儲部分字段,或者不存儲部分字段,形如:
"yourtype":{
"_source":{
"includes":["field1","field2"] //這兩個字段會存儲在原始文檔
},
"properties": {
...
}
}
"yourtype":{
"_source":{
"excludes":["field1","field2"] //這兩個字段不會存儲在原始文檔
},
"properties": {
...
}
}這個屬性的配置方法和_source類似,它是把一個文檔里面的所有信息都放到一起組合成一個大字段。我們可以設置這個字段包含所有的字段,也可以設置只包含幾個字段,或者是只存儲幾個字段
"yourtype": {
"_all": {
"enabled": true //這樣設置的話,就包含了所有的字段
},}(2)包含或者不包含部分字段
"yourtype": {
"properties": {
"field1": {
"type": "string",
"include_in_all": false //這個字段不包含在_all
},
"field2": {
"type": "string",
"include_in_all": true //這個字段包含在_all
}
}
}這個字段類似于咱們百度的時候,符合預期文字的部分都會高亮顯示出紅色來
"query": {
"match": {
"_all": "中國人"
}
},
"highlight": {
"fields": {
//"_all": {} //這是對_all字段進行高亮查詢
//"title": {} //這是對title字段進行高亮顯示
}
}這個屬性是控制該字段是否生成倒排索引,取值主要有三個:
(1)analyzed:字段被索引,會做分詞,可搜索。反過來,如果需要根據某個字段進搜索,index屬性就應該設置為analyzed。 (2)not_analyzed:字段值不分詞,會被原樣寫入索引。反過來,如果某些字段需要完全匹配,比如人名、地名,index屬性設置為not_analyzed為佳。 (3)no:字段不寫入索引,當然也就不能搜索。反過來,有些業務要求某些字段不能被搜索,那么index屬性設置為no即可。
類似于:
(1)analyzed:字段被索引,會做分詞,可搜索。反過來,如果需要根據某個字段進搜索,index屬性就應該設置為analyzed。 (2)not_analyzed:字段值不分詞,會被原樣寫入索引。反過來,如果某些字段需要完全匹配,比如人名、地名,index屬性設置為not_analyzed為佳。 (3)no:字段不寫入索引,當然也就不能搜索。反過來,有些業務要求某些字段不能被搜索,那么index屬性設置為no即可。
用于指定是否將原始字段寫入索引,默認取值為no。
因為在Lucene中,高亮功能和store屬性是否存儲息息相關,因為需要根據偏移位置到原始文檔中找到關鍵字才能加上高亮的片段。在Elasticsearch,因為_source中已經存儲了一份原始文檔,可以根據_source中的原始文檔實現高亮,在索引中再存儲原始文檔就多余了,所以Elasticsearch默認是把store屬性設置為no。
注意: 如果想要對某個字段實現高亮功能,_source和store至少保留一個。
參考:https://blog.csdn.net/mlljava1111/article/details/70598481
描述了查詢分片的信息,查詢了多少個分片、成功的分片數量、失敗的分片數量等猜測這個字段代表該次查詢,獲取數據經過的分片數量之和
搜索的結果,total是全部的滿足的文檔數目,hits是返回的實際數目(默認是10)
代表的是查詢結果的評分值,分越高,代表權重越大,排名越靠前。具體的參考:
https://blog.csdn.net/paditang/article/details/79098830
有的時候我們可能對分數不感興趣,就可以使用filter進行過濾,它不會去計算分值,因此效率也就更高一些
我們可以通過制定路由,而避免ES自己進行大量的廣播操作。直接按照我們制定的路由找到對應的分片查詢,關于路由機制,我們不做贅述,只是了解下就行。
具體請參考:https://blog.csdn.net/cnweike/article/details/38531997
這兩個是精準查找,一個是單數,一次查找單個值。一個是復數,一次查找多個值。
例如:"terms" : {
"price" : [20, 30]
} GET _search
{
"query": {
"filtered": {
"query": {
"match": {
"text": "quick brown fox"
}
},
"filter": {
"term": {
"status": "published"
}
}
}
}
}(1) 這里的"filtered": 從ES5.0之后被移除了。
(2) filter代表過濾匹配,也是為了過濾status字段,讓它不去計算的分數,不用計算權重等。
新的語句為:
GET _search
{
"query": {
"bool": {
"must": {
"match": {
"text": "quick brown fox"
}
},
"filter": {
"term": {
"status": "published"
}
}
}
}
}(3) bool代表的是bool查詢,參數主要有:
must 所有的語句都 必須(must) 匹配,與 AND 等價。 must_not 所有的語句都 不能(must not) 匹配,與 NOT 等價。 should 至少有一個語句要匹配,與 OR 等價
以上是“Elasticsearch屬性單詞有哪些”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。