一、elasticsearch搜索精準度排序
elasticsearch是一個具有強大搜索能力的搜索引擎,涉及到搜索精準度排序,通常需要先設置mapping,即定義index的欄位類型、分詞器等信息。然後,可以通過給相關欄位加boost的方式,提高搜索結果相關度。
PUT /my-index
{
"mappings": {
"properties": {
"title": {
"type": "text",
"boost": 2
},
"content": {
"type": "text"
}
}
}
}
在上述代碼中,對於title欄位使用了boost=2的方式,表示搜索結果中帶有匹配title關鍵詞的文檔權重將加倍。
二、elasticsearch集群
elasticsearch可以支持多個節點組成一個集群,增強數據可靠性和高可用性。
可以通過下面的方式創建一個集群:
PUT /my-index
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 2
}
}
上述代碼中,number_of_shards表示該index被分成3個shards,而number_of_replicas=2表示每個shard對應的副本數是2個。
三、elasticsearch搜索引擎
elasticsearch作為一個搜索引擎,它的搜索能力來自於幾個方面:
1)全文搜索。elasticsearch內置了一組強大的分詞器,能夠智能地處理中文、英文等多種語言的分詞需求;
2)過濾器和聚合器。在搜索過程中,可以針對不同的條件設置各種過濾器和聚合器,比如日期範圍、產品價格區間等;
3)搜索建議。elasticsearch內置了多種搜索建議演算法,可以根據用戶已經輸入的部分關鍵詞,給出相關的搜索建議。
四、elasticsearch搜索指定分詞
在elasticsearch中,可以通過指定分詞器的方式,控制搜索過程中使用的分詞方式。
例如,在下面的代碼中,使用了ik_max_word分詞器來處理content欄位的分詞需求:
PUT /my-index
{
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "ik_max_word"
},
"content": {
"type": "text",
"analyzer": "ik_max_word"
}
}
}
}
五、elasticsearch搜索商品
在電商場景中,通常需要使用elasticsearch來搜索商品。下面是一個例子,使用了match查詢來實現搜索商品的功能:
GET /_search
{
"query": {
"match": {
"title": "MacBook"
}
}
}
上述代碼中,匹配了title欄位中包含MacBook關鍵詞的商品。
六、elasticsearch搜索原理
elasticsearch搜索原理可以簡單概括為:先根據用戶輸入的關鍵詞構建Query DSL查詢語句,然後在文檔(Document)中進行搜索,找出與查詢語句匹配的文檔並返回。
搜索過程中通常包括以下幾個步驟:
1)分詞。elasticsearch內置了一組強大的分詞器,能夠智能地處理中文、英文等多種語言的分詞需求;
2)查詢解析。elasticsearch將查詢語句解析成內部的Lucene查詢語法;
3)搜索。elasticsearch會在所有的shard上執行查詢,將結果合併之後返回給用戶。在搜索過程中,elasticsearch會使用演算法計算每個文檔的得分,然後按照得分從高到低排序。
七、elasticsearch搜索方式
elasticsearch支持多種搜索方式,包括match查詢、wildcard查詢、range查詢等。
下面是一個wildcard查詢的例子:
GET /_search
{
"query": {
"wildcard": {
"title": "*book*"
}
}
}
上述代碼中,匹配了title欄位中包含book關鍵詞的商品。
八、elasticsearch搜索過程
在搜索過程中,elasticsearch通常需要先執行分詞、查詢解析和搜索幾個步驟。
以下是一個簡單的搜索過程例子:
POST /my-index/_search
{
"query": {
"match":{
"title": "MacBook"
}
}
}
在上述代碼中,先查詢匹配title欄位中包含MacBook的文檔,然後返回搜索結果。
九、elasticsearch搜索語法
elasticsearch支持多種查詢語法,包括Query DSL、URI Search等。
以下是一個URI Search的例子:
GET /my-index/_search?q=title:MacBook
上述代碼中,使用了title關鍵詞進行搜索。
十、elasticsearch搜索優化
在實際使用elasticsearch進行搜索時,需要考慮一些搜索優化技巧。
例如,可以通過使用bool查詢來組合多種查詢,提高搜索結果相關度:
GET /_search
{
"query":{
"bool":{
"must":[{
"match":{
"title":"最新款 MacBook Air"
}
}],
"should":[{
"match":{
"description":"輕薄便攜,適合出差"
}
}],
"must_not":[{
"match":{
"color":"黃色"
}
}]
}
}
}
上述代碼中,同時對title欄位和description欄位進行了查詢,提高了搜索結果相關度。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/245408.html
微信掃一掃
支付寶掃一掃