增刪改
注:以下HTTP請求省略ip和端口暑塑,例如
"http://192.168.181.130:9200/megacorp/employee/aaa" 將簡寫為 "/megacorp/employee/aaa"
官方API
https://www.elastic.co/guide/cn/elasticsearch/guide/current/search-in-depth.html
1.增加吼句、更新文檔
#當(dāng)該文檔存在時將進行更新
PUT /megacorp/employee/aaa
{
"first_name" : "John",
"last_name" : "Smith",
"age" : 25,
"about" : "I love to go rock climbing",
"interests": [ "sports", "music" ]
}
#megacorp--> 索引名稱
#employee-->類型
#aaa-->文檔的id
局部更新
POST /megacorp/employee/aaa/_update
{
"doc": {
"last_name": "f1lk"
}
}
2.刪除文檔
DELETE /megacorp/employee/aaa
文檔的檢索
1.根據(jù)索引、 類型和ID
GET /megacorp/employee/aaa
2.根據(jù)索引和類型
#返回megacorp索引的所有employee數(shù)據(jù)
GET /megacorp/employee/_search
3.簡單條件查詢
GET /megacorp/employee/_search?q=last_name:Smith
4使用DSL語句查詢
DSL(Domain Specific Language特定領(lǐng)域語言)以JSON請求體的形式出現(xiàn)
#match-->分詞模式匹配計算相關(guān)性
POST /megacorp/employee/_search
{
"query": {
"match": {
"last_name": "Smith"
}
}
}
#短語搜索 模糊匹配
POST /megacorp/employee/_search
{
"query": {
"match_phrase": {
"about": "rock climbing"
}
}
}
5.聚合
5.x的版本的聚合這些操作用單獨的數(shù)據(jù)結(jié)構(gòu)(fielddata)緩存到內(nèi)存里了事格,故做聚合前需要針對text類型的字段的聚合設(shè)置開啟(一般不建議對text 類型做分組聚合),其他類型的字段無需設(shè)置
簡單來說就是在聚合前執(zhí)行如下操作
PUT megacorp/_mapping/employee/
{
"properties": {
"interests": {
"type": "text",
"fielddata": true
}
}
}
這樣就可以針對"interests"字段做聚合搜索了
POST /megacorp/employee/_search
{
"aggs": {
"all_interests": {
"terms": { "field": "interests" }
}
}
}