搜尋介面概述

2021-07-31 11:41:49 字數 2387 閱讀 7987

節點

說明對應資料庫

_index

文件儲存的地方

資料庫_type

文件代表的物件的類

資料表_id

文件的唯一標識

表中每一列資料

get /_index/_type/_id

響應:

}

get /_index/_type/_search

應內容的hits陣列中包含了我們所有的三個文件。預設情況下搜尋會返回前10個結果。

,

"hits":

},...]}

}

hits:

響應中最重要的部分是hits,它包含了total欄位來表示匹配到的文件總數,hits陣列還包含了匹配到的前10條資料。

hits陣列中的每個結果都包含_index、_type和文件的_id欄位,被加入到_source欄位中這意味著在搜尋結果中我們將可以直接使用全部文件。這不像其他搜尋引擎只返回文件id,需要你單獨去獲取文件。

每個節點都有乙個_score欄位,這是相關性得分(relevance score),它衡量了文件與查詢的匹配程度。預設的,返回的結果中關聯性最大的文件排在首位;這意味著,它是按照_score降序排列的。這種情況下,我們沒有指定任何查詢,所以所有文件的相關性是一樣的,因此所有結果的_score都是取得乙個中間值1

max_score指的是所有文件匹配查詢中_score的最大值。

took:

took告訴我們整個搜尋請求花費的毫秒數。

shards:timeout:

time_out值告訴我們查詢超時與否。一般的,搜尋請求不會超時。如果響應速度比完整的結果更重要,你可以定義timeout引數為10或者10ms(10毫秒),或者1s(1秒)

get /_search?timeout=10ms
get /_index/_type/_search?q=field:value

我們在請求中依舊使用_search關鍵字,然後將查詢語句傳遞給引數q=。

},}

]}

}

dsl(domain specific language特定領域語言)以json請求體的形式出現。

get /_index/_type/_search

}}

這會返回與之前查詢相同的結果。你可以看到有些東西改變了,我們不再使用查詢字串(query string)做為引數,而是使用請求體代替。這個請求體使用json表示,其中使用了match語句(查詢型別之一)。

我們讓搜尋稍微再變的複雜一些。我們想要找到姓名為「test」,但是我們只想得到年齡大於30歲。我們的語句將新增過濾器(filter),它使得我們高效率的執行乙個結構化搜尋:

get /megacorp/employee/_search

<1>}},

"query" : }}

}}

到目前為止搜尋都很簡單:搜尋特定的名字,通過年齡篩選。讓我們嘗試一種更高階的搜尋,全文搜尋——一種傳統資料庫很難實現的功能。

get /_index/_type/_search

}}

你可以看到我們使用了之前的match查詢,從key欄位中搜尋」value」

},}

]}

}

預設情況下,elasticsearch根據結果相關性評分來對結果集進行排序,所謂的「結果相關性評分」就是文件與查詢條件的匹配程度。

目前我們可以在字段中搜尋單獨的乙個詞,這挺好的,但是有時候你想要確切的匹配若干個單詞或者短語(phrases)。例如我們想要查詢同時包含」value1」和」value2」(並且是相鄰的)的記錄。

要做到這個,我們只要將match查詢變更為match_phrase查詢即可:

get /_index/_type/_search

}}

讓我們在之前的語句上增加highlight引數:

get /_index/_type/_search

},"highlight": }}

}

當我們執行這個語句時,會命中與之前相同的結果,但是在返回結果中會有乙個新的部分叫做highlight,這裡包含了來自field欄位中的文字,並且用來標識匹配到的單詞。

,

"highlight": }]

}}

C 介面 介面概述

c 不支援多重繼承,但是客觀世界出現多重繼承的情況又比較多。為了避免傳統的多重繼承給程式帶來的複雜性等問題,c 提出了介面的概念。通過介面可以實現多重繼承的功能。介面是單純對事物行為的描述。例如,電器都有 開 和 關 兩個行為,開關的作用在於開啟或關閉電器,而開關的形式也是不一樣的。電燈 電視 電扇...

介面的概述

介面 是一種對行為的抽象,它描述某個類會不會什麼 介面的宣告語法 訪問修飾符 inte ce 介面名 inte ce關鍵字 用於定義介面 介面中的所有方法都是抽象方法,即使不標明abstract 乙個類可以實現乙個或多個介面,當實現乙個介面時,必須實現介面中所有的抽象方法 介面實現的語法 在類定義後...

介面測試概述

介面測試是測試系統元件間介面的一種測試。為什麼要介面測試 介面測試將複雜的系統關聯進行簡化,只要做好每個介面的測試就能夠較好的保證系統質量 通過對介面功能的覆蓋來驗證是否影響它人對介面的呼叫 介面功能比較單一,能夠比較好的進行測試覆蓋 介面相對於介面功能,會更底層一些,測試覆蓋會更容易 介面測試的質...