elastic search 是高可用、開源、富文本的搜索和分析引擎。支持大數據量快速近實時的存儲、搜索和分析。通常用作支持複雜查詢的底層引擎/技術,爲具有複雜搜索特性和需求的應用程序提供動力。
官網網站中的 Elasticsearch documentation解說的十分詳細。但都是英文的,沒辦法外國人寫的,先學習借鑑吧。
--index mapping--
curl -XPUT http://zhaixl1:9200/shakespeare -d '
{
"mappings" : {
"_default_" : {
"properties" : {
"speaker" : {"type": "string", "index" : "not_analyzed" },
"play_name" : {"type": "string"},
"line_id" : { "type" : "integer" ,"index" : "not_analyzed"},
"speech_number" : { "type" : "integer" ,"index" : "not_analyzed"},
"date_time":{"type": "string", "index" : "not_analyzed"}
}
}
}
}
';
curl -XPUT http://zhaixl1:9200/zhaixl -d '
{
"mappings" : {
"date_test" : {
"properties" : {
"speaker" : {"type": "string", "index" : "not_analyzed" },
"play_name" : {"type": "string"},
"line_id" : { "type" : "integer" ,"index" : "not_analyzed"},
"speech_number" : { "type" : "integer" ,"index" : "not_analyzed"},
"date_time":{"type": "string"}
}
}
}
}
';
--create dataId:1 --
curl -XPUT http://zhaixl1:9200/shakespeare/-default-/1?op_type=create -d '
{
"speaker":"me",
"play_name":"you and me!",
"line_id":11,
"speech_number":12,
"date_time":"2016-07-11T12:58:17.136+0800"
}
';
curl -XPOST http://zhaixl1:9200/shakespeare/-default-/3 -d '
{
"speaker":"me",
"play_name":"you and hhh",
"line_id":11,
"speech_number":12,
"date_time":"2016-07-12T12:58:17.136+0800",
"www":"www"
}
';
--get dataId:1 --
curl -XGET http://zhaixl1:9200/shakespeare/-default-/1 ;
--update dataId:1 --
curl -XPUT http://zhaixl1:9200/shakespeare/-default-/1 -d '
{
"speaker":"you",
"play_name":"you",
"line_id":11,
"speech_number":12
}
';
--delete date:2--
curl -XDELETE http://zhaixl1:9200/shakespeare/-default-/2 ;
--search date key --
curl -XGET 'http://zhaixl1:9200/zhaixl/-default-/_search' -d '{
"query" : {
"term" : { "speaker" : "me" } //查所有 "match_all": {}
},
"sort" : [{ "speech_number" : {"order" : "asc"}},{ "play_name" : "desc" } ],
"from":0,
"size":100
}
';
curl -XGET 'http://zhaixl1:9200/zhaixl/-default-/_search' -d '{
"filter": {"and":{"filters":[{"term":{"speaker":"you"}},{"term":{"speech_number":"12"}}]}},
"sort" : [{ "speech_number" : {"order" : "asc"}},{ "play_name" : "desc" } ],
"from":0,
"size":100
}
';
這裏有幾個使用場景,Elasticsearch可用於:
1 在線網站搜索的自動補全。使用Elasticsearch來存儲您的整個產品目錄和庫存和爲他們提供搜索和自動補全的功能。
2 收集日誌和交易數據,分析和挖掘這些數據,尋找趨勢,統計,總結,或異常。在這種情況下,可以使用LogStash(的Elasticsearch / LogStash / Kibana技術棧的一部分)的收集、彙總,並解析你的數據,然後 Logstash把這些數據送到Elasticsearch。一旦數據在Elasticsearch,你可以搜索和聚合來挖掘你感興趣的任何信息。
2 價格變動提醒(電商網站的降價通知),允許顧客指定一條規則,比如“我有興趣購買一個特定的電子產品,如果在下個月任何供應商的價格低於X美元,我都會得到通知”。在這種情況下,一旦發現變動,你可以把供應商的價格,把他們推到Elasticsearch和使用反向搜索(過濾器Percolator)的能力來匹配客戶查詢價格走勢最終將警報發送到客戶。
3 數據分析/商業智能的需求,並希望快速調查,分析,可視化,並問大量數據的問題(想想數百萬或數十億的記錄)。在這種情況下,你可以使用Elasticsearch來存儲你的數據,然後用Kibana(Elasticsearch / LogStash / Kibana技術棧的一部分)建立自定義的可視化對你十分重要的數據顯示儀表板。此外,您可以使用Elasticsearch的聚合功能來執行復雜的商業智能與數據查詢。
4 elastic search 有支持hadoop版的,很好的支持了批量搜索查詢,可以將大批量數據在按複雜的搜索條件近實時的過濾出來。