ElasticSearch上手指南
來自: https://blog.huachao.me/2016/2/ElasticSearch上手指南/
一句話說服你用elasticsearch,“github用elasticsearch實時檢索1300億行代碼”
ElasticSearch的基本特征
- 幾乎實時的索引,大概有1秒的延遲,就能使被索引的數據被檢索到
- 一臺elastic server只能加入到一個cluster
- 索引名,例如一個blog的索引
- type,是一個索引名的一個維度(category),例如blog的數據(blog/data), blog的評論(blog/comment)
- 文檔,一個文檔是索引名+type的能夠被索引的數據
- 分片與備份,如果一個cluster有2臺elastic server,那么默認情況下一個索引有5個主分片和5個備份
ElasticSearch的安裝與啟動
- 官方網站下載直通
- 最好使用最近版OracleJDK,JDK 7也行
- 啟動之前修改 bin/elasticsearch.yml 中的 cluster.name 和 node.name ,前者用來自動加入相同 cluster.name 的集群
- bin/elasticsearch 啟動,或者 bin/elasticsearch -d 以守護進程啟動
- 啟動完畢后 http://localhost:9200
圖形用戶界面
CRUD
- Create : PUT /indexName/type/id {...} 如果url中不提供id,es會生成一個。同一個url如果PUT多次會累加 _version ,并且新的版本會替換老的版本
- Update : POST /indexName/type/id/_update {'doc':{'field':value}}
- Delete : DELETE url
- Read : GET url
- 批量索引: POST /indexName/type/_bulk {"index":{"_id":n}\n{json}}
Search
例子0:搜所有
curl -XPOST 'localhost:9200/bank/_search?pretty' -d ' { "query": { "match_all": {} }, "sort": { "balance": { "order": "desc" } } }'
例子1:模糊匹配keywords
Post /indexName/type/_search { "query": { "match":{ "field": keywords } }, "size":n }
例子2:完整匹配keywords
Get /indexName/type/_search { "query": { "match_phrase":{ "field": keywords } }, "from":fromNo, "size":n }
例子3:多個條件組合
Get /indexName/type/_search { "query": { "bool":{ "must": [ "match": { "field": keyword1 } "match_phrase":{ } ] } } }
例子4:返回部分字段
curl -XPOST 'localhost:9200/bank/_search?pretty' -d ' { "query": { "match_all": {} }, "_source": ["account_number", "balance"] }'
例子5:Filter的例子
curl -XPOST 'localhost:9200/bank/_search?pretty' -d ' { "query": { "bool": { "must": { "match_all": {} }, "filter": { "range": { "balance": { "gte": 20000, "lte": 30000 } } } } } }'
本文由用戶 MarRizzo 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!