es提供了兩種搜尋的方式:請求引數方式和請求體方式。
請求引數方式
curl 'localhost:9200/bank/_search?q=*&pretty'其中bank是查詢的索引名稱,q後面跟著搜尋的條件:q=*表示查詢所有的內容
請求體方式(推薦這種方式)
curl -xpost 'localhost:9200/bank/_search?pretty' -d '這種方式會把查詢的內容放入body中,會造成一定的開銷,但是易於理解。在平時的練習中,推薦這種方式。}}'
返回的內容
,query定義了查詢,match_all宣告了查詢的型別。還有其他的引數可以控制返回的結果:"hits" :
}, }, }
}
curl -xpost 'localhost:9200/bank/_search?pretty' -d '上面的命令返回了所有文件資料中的第一條文件。如果size不指定,那麼預設返回10條。}, "size": 1
}'
下面的命令請求了第10-20的文件。
curl -xpost 'localhost:9200/bank/_search?pretty' -d '下面的命令指定了文件返回的排序方式:}, "from": 10,
"size": 10
}'
curl -xpost 'localhost:9200/bank/_search?pretty' -d '上面了解了基本的搜尋語句,下面就開始深入一些常用的dsl了。}, "sort": }
}'
之前的返回資料都是返回文件的所有內容,這種對於網路的開銷肯定是有影響的,下面的例子就指定了返回特定的字段:
curl -xpost 'localhost:9200/bank/_search?pretty' -d '再回到query,之前的查詢都是查詢所有的文件,並不能稱之為搜尋引擎。下面就通過match方式查詢特定欄位的特定內容,比如查詢餘額為20的賬戶資訊:}, "_source": ["account_number", "balance"]
}'
curl -xpost 'localhost:9200/bank/_search?pretty' -d '}}'
curl -xpost 'localhost:9200/bank/_search?pretty' -d '}}'
curl -xpost 'localhost:9200/bank/_search?pretty' -d '如果我們想要返回同時包含mill和lane的,可以通過match_phrase查詢:}}'
curl -xpost 'localhost:9200/bank/_search?pretty' -d 'es提供了bool查詢,可以把很多小的查詢組成乙個更為複雜的查詢,比如查詢同時包含mill和lane的文件:}}'
curl -xpost 'localhost:9200/bank/_search?pretty' -d '修改bool引數,可以改為查詢包含mill或者lane的文件:}, }]}
}}'
curl -xpost 'localhost:9200/bank/_search?pretty' -d '也可以改寫為must_not,排除包含mill和lane的文件:}, }]}
}}'
curl -xpost 'localhost:9200/bank/_search?pretty' -d 'bool查詢可以同時使用must, should, must_not組成乙個複雜的查詢:}, }]}
}}'
curl -xpost 'localhost:9200/bank/_search?pretty' -d '之前說過score欄位指定了文件的分數,使用查詢會計算文件的分數,最後通過分數確定哪些文件更相關,返回哪些文件。} ],
"must_not": [}]
}}}'
有的時候我們可能對分數不感興趣,就可以使用filter進行過濾,它不會去計算分值,因此效率也就更高一些。
filter過濾可以巢狀在bool查詢內部使用,比如想要查詢在2000-3000範圍內的所有文件,可以執行下面的命令:
curl -xpost 'localhost:9200/bank/_search?pretty' -d 'es除了上面介紹過的範圍查詢range、match_all、match、bool、filter還有很多其他的查詢方式,這裡就先不一一說明了。}, "filter": }}
}}}'
聚合提供了使用者進行分組和數理統計的能力,可以把聚合理解成sql中的group by和分組函式。在es中,你可以在一次搜尋查詢的時間內,即完成搜尋操作也完成聚合操作,這樣就降低了多次使用rest api造成的網路開銷。
下面就是通過terms聚合的簡單樣例:
curl -xpost 'localhost:9200/bank/_search?pretty' -d '它類似於sql中的下面的語句:}}}'
select state, count(*) from bank group by state order by count(*) desc返回的資料:
"hits" : ,由於size設定為0,它並沒有返回文件的資訊,只是返回了聚合的結果。"aggregations" : , , , , , , , , , ]
}}}
比如統計不同賬戶狀態下的平均餘額:
curl -xpost 'localhost:9200/bank/_search?pretty' -d '聚合支援巢狀,舉個例子,先按範圍分組,在統計不同性別的賬戶餘額:, "aggs": }}
}}}'
curl -xpost 'localhost:9200/bank/_search?pretty' -d '聚合可以實現很多複雜的功能,而且es也提供了很多複雜的聚合,這裡作為引導篇,也不過多介紹了。, ,]},
"aggs": ,
"aggs": }}
}}
}}}'
**
elasticsearch根據條件刪除資料
今天第一次接觸了下elasticsearch,和資料庫類似,但是刪除操作讓我找了好一會,還是看官方文件好點,網上說的不符合自己的需求。獲取客戶端 client.preparedeletebyquery index settypes commenttype setquery querybuilders...
elasticsearch配置詳解
elasticsearch的config資料夾裡面有兩個配置檔案 elasticsearch.yml和logging.yml,第乙個是es的基本配置檔案,第二個是日誌配置檔案,es也是使用log4j來記錄日誌的,所以logging.yml裡的設定按普通log4j配置檔案來設定就行了。下面主要講解下e...
誰在使用Elasticsearch
github github使用elasticsearch搜尋20tb的資料,包括13億的檔案和1300億行的 這個不用介紹了吧,碼農們都懂的,github在2013年1月公升級了他們的 搜尋,由solr轉為elasticsearch,目前集群規模為26個索引儲存節點和8個客戶端節點 負責處理搜尋請求...