儲存好資料之後,便可通過restful api進行搜尋。
詳細文件可參考:注:對前文的乙個補充,可以使用analyze來檢視分詞器的分詞結果。--簡單搜尋
--深入搜尋
分詞結果:get _analyze
搜尋使用get方式,get請求的路徑中,可以包含目標索引、型別和文件 id。,
,]}
形如:(注,有時get不支援帶請求體,因此這裡的get請求也可換成post)/_search
在所有的索引中搜尋所有的型別
/gb/_search
在 gb 索引中搜尋所有的型別
/gb,us/_search
在 gb 和 us 索引中搜尋所有的文件
/g*,u*/_search
在任何以 g 或者 u 開頭的索引中搜尋所有的型別
/gb/user/_search
在 gb 索引中搜尋 user 型別
/gb,us/user,tweet/_search
在 gb 和 us 索引中搜尋 user 和 tweet 型別
/_all/user,tweet/_search
在所有的索引中搜尋 user 和 tweet 型別
例如,查詢title欄位中含有python的:get _search
}}
返回結果:get test/_search
}}
,
"hits":
}#略]
}}
注意
如果在乙個精確字段上面使用match,則會精確匹配,比如在數字或者keyword的字段上使用。如果是text型別,則資料和查詢語句都會經過分詞器的處理。
例如,如果標題中為python,而查詢詞為大寫python,若經過ik分詞,都會被轉換為小寫,因此仍然能查出;但如果此title欄位未經分詞,而是keyword型別的話,則大小寫不匹配,就無法查出。
此外,match中只能指定乙個查詢字段。區別是term對於查詢詞不會進行分詞,必須精確完全匹配。
get test/_search
}}
最簡單的,查詢所有。get test/_search
}}
在match查詢中,如果對text欄位指定了像「python教程」這樣的查詢詞,會進行分詞,包含python或教程的結果都會被查詢出來。而match_phrase也會進行分詞,但是只有全部包含這些詞的結果會被查詢出來。get test/_search
}}
slop的含義是拆分出來的詞之間的最大間距。若超出此間距,就算都包含這些詞,也不會返回。get test/_search
}}}
match查詢只能指定乙個字段,而multi_match可以指定多個字段。
查詢comments中大於5小於等於60的資料:get test/_search
}}
查詢時間大於17-4-1而且小於等於當前:get test/_search
}}}
(boost是權重,可有可無,別的地方也可以用)get test/_search
}}}
查詢pyt*n:
可以進行查詢結果的分頁,指定從第幾個開始,取幾個。get test/_search
}}}
還是可以通過_source指定返回哪些字段。get test/_search
},"from":0,
"size":2
}
對comments欄位按照asc公升序排列(desc為降序):get test/_search
}}
bool查詢將多查詢組合在一起,它包含以下四種引數:get test/_search
},"sort":
}}
must
文件 必須 匹配這些條件才能被包含進來。
must_not
文件 必須不 匹配這些條件才能被包含進來。
should
如果滿足這些語句中的任意語句,將增加 _score ,否則,無任何影響。它們主要用於修正每個文件的相關性得分。
filter
必須 匹配,但它以不評分、過濾模式來進行。這些語句對評分沒有貢獻,只是根據過濾標準來排除或包含文件。
在bool中可指定filter進行過濾。
如,使用term精確匹配出salary為20的文件:
如果想過濾多個值,可以用terms。get test2/job/
_search}}
}}
靈活運用各種組合過濾查詢。例如,下面的查詢,是並且
bool可進行巢狀。下面的例子,外層should並列兩個條件或,要麼標題含有python,要麼必須滿足標題精確匹配django而且salary精確匹配30.get test2/job/
_search
}, }
],"must_not":}}
}}
用於查詢某個字段是否存在或為null。get test2/job/
_search
}, },}]
}}]
}}}
下面例子中,前者篩選出存在title欄位的文件,後者則反之。
get test2/job2/
_search}}
}}get test2/job2/
_search}}
}}
經過上面的介紹,基本整理了es的搜尋中的常用方法,能滿足最基礎的搜尋使用。更詳細的搜尋,請參閱文件。
Elasticsearch快速入門
mysql estable index type rowdocument column field schema sqldsl 乙個es集群由乙個或多個節點 node 組成,每個集群都有乙個cluster name作為標識。乙個es例項就是乙個 node,乙個機器可以有多個例項,所以並不能說一台機器...
ElasticSearch快速入門
一.前言 上週公司在做乙個模組功能的時候 因為最後的結果資料量遠遠超過了預想的資料量 最後不得不把mysql換成elastic search,以前在學校的時候也沒有1接觸到這些東西 剛好這段時間處於專案空檔期 所以剛好趁機學習一下 二.介紹 elasticsearch是乙個分布式的restful風格...
Elasticsearch學習之快速入門案例
1.document資料格式 面向文件的搜尋分析引擎 1 應用系統的資料結構都是物件導向的,複雜的 2 物件資料儲存到資料庫中,只能拆解開來,變為扁平的多張表,每次查詢的時候還得還原回物件格式,相當麻煩 3 es是面向文件的,文件中儲存的資料結構,與物件導向的資料結構是一樣的,基於這種文件資料結構,...