據我了解,當我索引檔案時說:
PUT <index>/_doc/1
{
"title":"black white fox cat"
}
彈性搜索通過標準分析器對此進行分析,并將標題轉換為標記陣列。
但是當我搜索這個檔案時,讓我們說
POST <index>/_search
{
"query":
{
"match":
{
"title":"black"
}
}
}
它通過同一個分析器再次分析,不是效率低下嗎?
uj5u.com熱心網友回復:
它效率不高,是提供搜索結果的必要步驟。讓我解釋一下,搜索和索引程序是如何作業的。
- 索引標記
text基于資料型別,并配置分析器并將標記索引到倒排索引中。 - 再次根據查詢型別對搜索詞進行標記(在查詢詞族的情況下沒有標記),并將生成的標記搜索到索引時創建的倒排索引中(步驟 1)。
- 標記匹配程序(將倒排索引中的索引時間標記與查詢時生成的標記進行匹配),是找到匹配的檔案并提供搜索結果的程序,通常這個標記匹配是一個精確的字串匹配程序,但在某些情況下會有例外例如(前綴查詢、通配符查詢等)。并且作為一個精確的字串匹配,它的程序非常快速和優化。
有各種用例,例如當您使用關鍵字資料型別時,text不進行分析,當您使用術語級別查詢時,搜索時間分析不會發生。
現在,重要的是,在搜索時間期間,在索引時間也使用相同的分析器,否則最終會生成不同的令牌,這些令牌不會在前面描述的步驟 3 中產生匹配。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/463955.html
上一篇:運行filebeat設定失敗
