啓動es的方式 sh bin/elasticsearchgit
查看插件 sh bin/elasticsearch-plugin -h 查看幫忙文檔
sh bin/elasticsearch-plugingithub
查看插件 http://localhost:9200/_cat/pluginsjson
下載 https://www.elastic.co/cn/downloads/logstash
下載 導入數據 https://grouplens.org/datasets/movielens/api
es index => table document => 行數據
get /movies/_count 獲取總數量
get /movies/ 獲取 mapping和 setting信息數組
POST users/_doc { "user":"Mike", "post_date":"2019-04-15T14:12:12", "message": "tring out kibana" }
PUT users/_doc/1?op_type=create { "user" : "Jack", "post_date" : "2019-04-15T14:12:12", "message" : "trying out Elasticsearch" }
PUT users/_doc/1 { "user":"Mike" }
POST users/_update/1 { "doc":{ "user":"test", "post_date":"2019-04-15T14:12:12", "message":"trying out Elasticsearch" } }
GET users/_doc/1
DELETE users/_doc/1
DELETE users
按照 空格 轉換成小寫 中文 非 _ 分割
包含數字 英文app
按照 空格 不包含數字 轉換大小寫爲小寫curl
按照 空格分割 不轉換大小寫 - 符號也不進行分割elasticsearch
按照 空格 - 分割 不包含數字和 副詞(in the)post
不進行分詞學習
standard 分詞的時候 分解成 單獨的詞語
icu_analyzer 中文分詞
ik 中文分詞 安裝方式 鏈接地址
ik_max_word 最細粒度 分詞
ik_smart 粗粒度 分詞
POST _analyze { "analyzer":"standard", "text":"2 running Quick brown-foxes leap over lazy dogs in the summer evening" }
/kibana_sample_data_ecommerce/_search?q=customer_first_name:Eddie
q 表示查詢的意思 使用的是 Query String syntax
df 表示指定默認查詢字段 默認是 全部字段
sort 排序字段
profile 能夠查看 查詢是如何執行的
() 的做用是表示或者,例如 q=title:(a b) 表示title爲a 或者 b,若是爲 q=title:a b 則表示 title 爲a 其餘的字段只要包含 b就算搜索的數據
表示全部字段中包含 2012的數據 /movies/_search?q=2012 { "profile":true } 表示title中包含2012的數據 /movies/_search?q=2012&df=title { "profile":true } /movies/_search?q=title:2012 { "profile":true } //表示 title 字段包含 beautiful 的或者 其餘的字段中存在 mind的數據 /movies/_search?q=title:beautiful mind { "profile":true } //表示 title 字段包含 beautiful mind的數據。當前爲嚴格查詢 必須的包含 beautiful mind 的數據; PhraseQuery /movies/_search?q=title:"beautiful mind" { "profile":true } //表示的是 title中包含 beautiful或者 title中包含 mind的數據 /movies/_search?q=title:(beautiful mind) { "profile":true } //表示 獲取包含mind的數據,當前 包含beautiful的數據排名靠前,可是具體還須要再肯定 /movies/_search?q=title:(beautiful %2Bmind) { "profile": true } //表示字段 titile中既要包含 beautiful 又要包含 mind 不分先後,這個是和 "beautiful mind" 的區別 /movies/_search?q=title:(beautiful AND mind) { "profile": true } //表示字段 title中包含 beautiful可是不包含mind的數據 /movies/_search?q=title:(beautiful NOT mind) { "profile":true } //範圍查找 區間查找 TODO //通配符查詢和模糊匹配 TOTO
此處爲重點學習內容,不少東西都只能在request body中使用
curl -X GET "http://xx/kibana_sample_data_ecommerce/_search" -H 'Content-Type:application/json' -d '{"query":{"match_all":{}}}'
prifle 表示的是 展現查詢 如何執行
分頁 from size from 表示從第幾個開始,size表示返回多少條數據
排序 sort
顯示字段
// _source 表示顯示的字段只能爲數組的方式 // sort 表示排序,還能夠寫成 "sort":{"year":"desc"} 或 "sort":[{"year":{"order":"desc"}}] // _source 表示的顯示字段 GET /movies/_search { "profile":true, "from": 0, "size": 10, "sort": [ {"year":"desc"} ], "_source":["year", "title"] } //表示的是 title中包含 beautiful或者 title中包含 mind的數據 至關於 /movies/_search?q=title:(beautiful mind) GET /movies/_search { "profile": "true", "from": 0, "size": 5, "query": { "match":{ "title": "beautiful mind" } } } //表示字段 titile中既要包含 beautiful 又要包含 mind 不分先後 至關於 /movies/_search?q=title:(beautiful AND mind) GET /movies/_search { "profile": "true", "from": 0, "size": 5, "query": { "match":{ "title":{ "query": "beautiful mind", "operator": "AND" } } } } //表示字段 title中 必須的包含 beautiful mind 按照順序的方式返回,至關於 /movies/_search?q=title:"beautiful mind" GET /movies/_search { "profile":"true", "from": 0, "size": 10, "query": { "match_phrase":{ "title":{ "query": "beautiful mind" } } } } // 表示 beautiful 和 mind 中間能夠冗餘 3個單詞 GET /movies/_search { "profile":"true", "from": 0, "size": 10, "query": { "match_phrase":{ "title":{ "query": "beautiful mind", "slop": 3 } } } }
/_search 全部索引上查詢 /index1/_search 在索引 index1 上查詢 /index1,index2/_search 在索引 index1 index2 上查詢 /index*/_search 以index開頭的索引上查詢
//查詢 字段爲 title 中包含 beautiful 或者 mind的數據 /movies/_search { "profile": true, "query":{ "query_string":{ "query":"beautiful mind", "default_field": "title" } } } //查詢title中必須存在beautiful和mind的數據,在query中使用的 AND 表示的是 而且的意思 /movies/_search { "profile": true, "query":{ "query_string":{ "query":"beautiful AND mind", "default_field": "title" } } } //同上 /movies/_search { "profile": true, "query":{ "query_string":{ "query":"beautiful mind", "default_field": "title", "default_operator": "and" } } } //使用 simple_query_string 執行查詢操做 /movies/_search { "profile": "true", "query":{ "simple_query_string":{ "query": "beaultiful mind", "default_operator": "and", "fields": ["title"] } } } //同上,simple_string_query 使用的是 + - | 表示 and not or, 只有 fields /movies/_search { "profile": "true", "query":{ "simple_query_string":{ "query": "beaultiful + mind", "fields": ["title"] } } }
simple_string_query 和 string_query 對比
一、string_query 可使用 default_filed和fields 可是 simple_string_query 只可用 fields
二、string_query 在 query 字段中能夠 使用 AND OR NOT 表示 「而且、 或者、不」 得關係,可是必須的爲大寫,simple_string_query 必須 使用 "+ | -" 表示 而且 或者 不 的關係;二者均可以使用 default_operator 達到一樣的效果
dynamic _mapping 默認動態設置 數據類型;
dynamic _mapping 設置的值分別爲 true false strict 默認爲true
true 表示 新增字段會自動索引;false表示 新增字段不會索引,strict表示 不能新增數據;
查看mapping信息 GET /index/_mapping
PUT /index/_mapping { "dynamic": true }
分組統計
GET /kibana_sample_data_flights/_search { //顯示詳細的表示查詢字段過程 "profile": true , //只是顯示0條結果,這裏主要看統計信息,因此不看數據 "size": 0, //統計信息 "aggs":{ //表示統計結果呈現字段 "flight_dest":{ //分組統計,相似group by "terms":{ //分組字段 "field": "OriginCountry", //統計結果只是顯示一條數據 "size": 10 } }, //獲取總數據的平均值 "avg_price":{ "avg":{ "field":"AvgTicketPrice" } }, //獲取總數據的最大值和最小值 "max_price":{ "max":{ "field": "AvgTicketPrice" } }, "min_price":{ "min":{ "field":"AvgTicketPrice" } } //分組中添加二次分組 "weather":{ //按照天氣字段分組 "terms":{ "field": "DestWeather" }, //在天氣分組中,再按照OriginCountry進行分組 "aggs":{ "origin_source":{ "terms":{ "field": "OriginCountry" } } } } } }