http://mp.weixin.qq.com/s?__biz=MzA4Nzg5Nzc5OA==&mid=400771024&idx=1&sn=c38fbeff5f327010afa3fcd62194a8fd&scene=2&srcid=1208D1tfZdKkouWuouqkYeT2&from=timeline&isappinstalled=0#wechat_redirect
查詢執(zhí)行過程通常要分成兩個階段,分散階段及合并階段。分散階段是向所查詢的索引中的所有shard發(fā)起執(zhí)行查詢的過程,合并階段是將各shard返回的結(jié)果合并、排序并響應(yīng)給客戶端的過程。
向ElasticSearch發(fā)起查詢操作有兩種方式:一是通過RESTful request API傳遞查詢參數(shù),也稱“query-string”;另一個是通過發(fā)送REST request body,也稱作JSON格式。
ES的數(shù)據(jù)可被廣義的分為兩種類型:“types:exect”和“full-text”。
精確值(Exact values)就是指數(shù)據(jù)未曾加工過的原始值,而Full-text則用于引用文本中的數(shù)據(jù)。
搜索引擎:
搜索程序一般由索引鏈及搜索組件組成。
索引鏈功能的實現(xiàn)需要按照幾個獨立的步驟依次完成:檢索原始內(nèi)容、根據(jù)原始內(nèi)容來創(chuàng)建對應(yīng)的文檔、對創(chuàng)建的文檔進行索引。搜索組件用于接收用戶的查詢請求并返回相應(yīng)結(jié)果,一般由用戶接口、構(gòu)建可編程查詢語句的方法、查詢語句執(zhí)行引擎及結(jié)果展示組件組成。
當需要從大量文本中快速檢索文本目標時,必須首先將文本內(nèi)容轉(zhuǎn)換成能夠進行快速搜索的格式,以建立針對文本的索引數(shù)據(jù)結(jié)構(gòu),此即為索引過程。
分片用于Elasticsearch在你的集群中分配數(shù)據(jù)。想象把分片當作數(shù)據(jù)的容器。文檔存儲在分片中,然后分片分配給你集群中的節(jié)點上。當你的集群擴容或縮小,Elasticsearch將會自動在你的節(jié)點間遷移分片,以使集群保持平衡。
ElasticSearch 的search_type (搜索類型): 6個
http://es.xiaoleilu.com/060_Distributed_Search/15_Search_options.html
query_then_fetch是默認的搜索類型
count(計數(shù))、query_and_fetch、dfs_query_then_fetch、dfs_query_and_fetch、scan
映射及分析
在索引中有12個tweets,只有一個包含日期2014-09-15,但是我們看看下面查詢中的totalhits。
GET /_search?q=2014? ? ? ? ? ? ? # 12 個結(jié)果
GET /_search?q=2014-09-15? ? ? ? # 還是 12 個結(jié)果 !
GET /_search?q=date:2014-09-15? # 1? 一個結(jié)果
GET /_search?q=date:2014? ? ? ? # 0? 個結(jié)果 !