Shards & Replicas (分片和副本)html
Shards:每一個索引有一個或多個分片,索引的數據被分配到各個分片上,至關於一桶水用了N個杯子裝 Replicas:副本,備份分片。每一個主分片都有一個備份分片在另外一個節點上,此時容許掛掉任意一個節點。
DSL(Domain Specific Language):Elasticsearch 定義的查詢語言
ES字段類型:https://blog.csdn.net/chengyu...node
Elasticsearch | 關係型數據庫 | NOSQL數據庫 |
---|---|---|
索引(index) | 數據庫(database) | 數據庫(database) |
文檔(document) | 行(row) | 文檔(document) |
字段(fields) | 字段(columns) | 字段(fields) |
ElasticSearch相較於傳統數據庫的缺陷
· 不支持事務性操做
· 讀寫延時(NTR)
· 不適合頻繁的update等操做
· 安全性可靠性
Settings API: 獲取索引設置正則表達式
GET es-index_*/_settings { "es-index_*": { "settings": { "index": { "mapping": { "ignore_malformed": "true" }, "refresh_interval": "10s", "translog": { "durability": "async" }, "max_result_window": "10000", "creation_date": "1551295476399", "requests": { "cache": { "enable": "true" } }, "unassigned": { "node_left": { "delayed_timeout": "6h" } }, "priority": "5", "number_of_replicas": "1", "uuid": "-JvfCJ3-TCaMMxqnOiOfNA", "version": { "created": "2030399" }, "codec": "best_compression", "routing": {}, "search": { "slowlog": { "threshold": { "fetch": { "warn": "1s", "trace": "200ms", "debug": "500ms", "info": "800ms" }, "query": { "warn": "10s", "trace": "500ms", "debug": "1s", "info": "5s" } } } }, "number_of_shards": "12", "merge": { "scheduler": { "max_thread_count": "1" } } }, "tribe": { "name": "olap" } } } }
Stats API: 獲取索引統計信息(http://cwiki.apachecn.org/pag...)數據庫
GET es-index_*/_stats { "_shards": { "total": 622, "successful": 622, "failed": 0 }, //返回的統計信息是索引級的聚合結果,具備primaries和total的聚合結果。其中primaries只是主分片的值,total是主分片和副本分片的累積值。 "_all": { "primaries": { "docs": { //文檔和已刪除文檔(還沒有合併的文檔)的數量。注意,此值受刷新索引的影響。 "count": 2932357017, "deleted": 86610 }, "store": { //索引的大小。 "size_in_bytes": 2573317479532, }, "indexing": {}, //索引統計信息,能夠用逗號分隔的type列表組合,以提供文檔級統計信息。 "get": {}, // get api調用統計 "search": {}, // search api 調用統計 }, "total": { } } }
Search API(兩種形式)apache
using a simple query string as a parameterapi
GET es-index_*/_search?q=eventid:OMGH5PageView
using a request body緩存
GET es-index_*/_search { "query": { "term": { "eventid": { "value": "OMGH5PageView" } } } }
Leaf Query Clause: 葉查詢子句
Compound Query Clause: 複合查詢子句安全
DSL查詢上下文app
** 查詢時,可先使用filter過濾操做過濾數據,而後使用query查詢匹配數據async
查詢結果字段過濾
fields:字段過濾
script_fields:可對原始數據進行計算
"fields": ["eh"], //僅返回eh字段 "script_fields": { "test": { "script": "doc['eh'].value*2" } } // 返回eh字段值*2的數據並命名爲test字段
查詢過濾:query
bool 組合過濾器
{ "bool" : { "must" : [], // 全部的語句都必須匹配,至關於SQL中的and "must_not" : [], // 全部的語句都不能匹配,至關於SQL中的not "should" : [], // 至少有一個語句要匹配,至關於SQL中的OR "filter" : [] || { "and": [], "or": [], "not": [], }, // } }
filtered過濾器
{ "filtered": { "query": {}, "filter": {} // 在filter中進行數據過濾,而後再去query中進行匹配 } }
match和term
match(模糊匹配):先檢查字段類型是不是analyzed,若是是,則先分詞,再去去匹配token;若是不是,則直接去匹配token。
term(精確匹配):直接去匹配token。
terms: 多項查詢
{ terms : { user: ['tony', 'kitty' ] } }
range範圍過濾
對於date類型字段的範圍選擇可使用 Date Math
{ "range" : { "born" : { "gte": "01/01/2012", "lte": "2013", "format": "dd/MM/yyyy||yyyy" } } } { "range" : { "timestamp" : { "gte": "now-6d/d", // Date Math "lte": "now/d", // Date Math "time_zone": "+08:00" // 時區 } } }
exists 該條記錄是否存在某個字段
{ "exists" : { "field" : "user" } }
wildcard: 通配符查詢(對分詞進行匹配查詢)
Note that this query can be slow, as it needs to iterate over many terms. In order to prevent extremely slow wildcard queries, a wildcard term should not start with one of the wildcards * or ?
wildcard查詢性能較差,儘可能避免使用*或?開頭來進行wildcard匹配
prefix: 前綴查詢
regexp: 正則表達式查詢
value帶-的特殊處理
value帶了-,則默認會被切詞,致使搜索結果不許確。解決辦法之一就是在字段那裏加個.raw
term: {status:'pre-active'} => term: {status.raw: 'pre-active'}
GET es-index_*/_search { "fields" : ["eventid", "logtime"], "query": { "term": { "eventid": { "value": "OMGH5PageView" } } }, "sort": [ { "logtime": { "order": "asc" } } ] }
date_histogram
(和 histogram 同樣)默認只會返回文檔數目非零的 buckets。 即便 buckets
中沒有文檔咱們也想返回。能夠經過設置兩個額外參數來實現這種效果:
"min_doc_count" : 0, // 這個參數強制返回空 buckets。 "extended_bounds" : { // 強制返回全年 "min" : "2014-01-01", "max" : "2014-12-31" }
took: 查詢返回的時間(單位:毫秒)time_out: 查詢是否超時_shards: 描述查詢分片的信息,包括:查詢了多少分片,成功的分片數量,失敗的分片數量等hits:搜索的結果total: 知足查詢條件的文檔數max_score: hits: 知足條件的文檔_score: 文檔的匹配程度