常用的Elasticseaerch檢索技巧彙總

2022-07-17 04:54:12 字數 3084 閱讀 6614

本篇部落格是對前期工作中遇到es坑的一些小結,順手記錄下,方便日後查閱。

為了講解不同型別es檢索,我們將要對包含以下型別的文件集合進行檢索:

1

. title 標題; 2

. authors 作者; 3

. summary 摘要; 4

. release data 發布日期;

首先,讓我們借助 bulk api批量建立新的索引並提交資料。

put /bookdb_index

}post /bookdb_index/book/_bulk}}

}}

有兩種方式可以執行全文檢索: 

1)使用包含引數的檢索api,引數作為url的一部分。

舉例:以下對」guide」執行全文檢索。

get /bookdb_index/book/_search?q=guide

[results]

"hits

": [},}

]

2)使用完整的es dsl,其中json body作為請求體。 

其執行結果如方式1)結果一致。

}}

解讀:使用multi_match關鍵字代替match關鍵字,作為對多個字段執行相同查詢的方便的簡寫方式。 fields屬性指定要查詢的字段,在這種情況下,我們要對文件中的所有字段進行查詢。

這兩個api也允許您指定要搜尋的字段。 例如,要在標題欄位中搜尋帶有「in action」字樣的圖書, 

1)url檢索方式 

如下所示:

get /bookdb_index/book/_search?q=title:in

action

[results]

"hits

": [},}

]

2)dsl檢索方式 

然而,full body的dsl為您提供了建立更複雜查詢的更多靈活性(我們將在後面看到)以及指定您希望的返回結果。 在下面的示例中,我們指定要返回的結果數、偏移量(對分頁有用)、我們要返回的文件字段以及屬性的高亮顯示。 

結果數的表示方式:size; 

偏移值的表示方式:from; 

指定返回字段 的表示方式 :_source; 

高亮顯示 的表示方式 :highliaght。

post /bookdb_index/book/_search

},"size

": 2

,

"from

": 0

,

"_source

": [ "

title

", "

summary

", "

publish_date"],

"highlight": }}

}[results]

"hits

": ,

"highlight": },,

"highlight": }]

}

注意:對於 multi-word 檢索,匹配查詢允許您指定是否使用『and』運算子, 

而不是使用預設』or』運算子。 

您還可以指定minimum_should_match選項來調整返回結果的相關性。 

詳細資訊可以在elasticsearch指南中查詢elasticsearch guide. 獲取。

如我們已經看到的,要在搜尋中查詢多個文件字段(例如在標題和摘要中搜尋相同的查詢字串),請使用multi_match查詢。

post /bookdb_index/book/_search

}}[results]

"hits":

},},}]

}

注意:以上結果3匹配的原因是guide在summary存在。

由於我們正在多個字段進行搜尋,我們可能希望提高某一字段的得分。 在下面的例子中,我們將「摘要」欄位的得分提高了3倍,以增加「摘要」欄位的重要性,從而提高文件 4 的相關性。

post /bookdb_index/book/_search

},"_source

": ["

title

", "

summary

", "

publish_date"]

}[results]

"hits

": [

},},}]

可以使用and / or / not運算子來微調我們的搜尋查詢,以提供更相關或指定的搜尋結果。

在搜尋api中是通過bool查詢來實現的。 

bool查詢接受」must」引數(等效於and),乙個must_not引數(相當於not)或者乙個should引數(等同於or)。

例如,如果我想在標題中搜尋一本名為「elasticsearch」或「solr」的書,and由「clinton gormley」創作,但not由「radu gheorge」創作:

post /bookdb_index/book/_search

}, } ] }

},"must

": },

"must_not

": }}}

}[results]

"hits

": [}]

注意:您可以看到,bool查詢可以包含任何其他查詢型別,包括其他布林查詢,以建立任意複雜或深度巢狀的查詢。

在 match檢索 和多匹配檢索中可以啟用模糊匹配來捕捉拼寫錯誤。 基於與原始詞的levenshtein距離來指定模糊度。

post /bookdb_index/book/_search

},"_source

": ["

title

", "

summary

", "

publish_date"],

"size

": 1

}[results]

"hits

": [}]

從6開始

常用 Dos 命令 雜項 常用的命令符 常用的公式

services.msc 開啟系統服務。regedit 開啟登錄檔 sqlplus 載入 oracle 開戶段。cmd 進入 dos 介面。exit 退出 dos 介面。edit 進入 dos 編輯模式。windows 常用 dos 命令 1,查詢設定本機的ip 開始 執行 cmd ipconfig...

常用 Dos 命令 雜項 常用的命令符 常用的公式

services.msc 開啟系統服務。regedit 開啟登錄檔 sqlplus 載入 oracle 開戶段。cmd 進入 dos 介面。exit 退出 dos 介面。edit 進入 dos 編輯模式。windows 常用 dos 命令 1,查詢設定本機的ip 開始 執行 cmd ipconfig...

常用的狀態碼 常用的請求方法

常用狀態碼 1xx 以1開頭 伺服器成功接收部分請求 2xx 一般表示成功 3xx 一般表示重定向 4xx 一般表示客戶端錯誤 5xx 一般表示伺服器錯誤 200 表示成功 404 伺服器無法找到被請求的頁面 你訪問的資源不存在 403 伺服器拒絕訪問 許可權不夠 forbidden 500 請求未...