2、elasticseatch 获取、更新、删除数据
获取
简单获取
GET /user/_doc/1 // 获取user下id为1的数据 GET /user/_source/1 // 获取user下id为1的源数据
通过 url 查询数据
GET _search?q="明明" // 从所有的index中查找 GET user/_search?q=1 // 从某个index中查找
通过 request body 查询数据
1、全文查询
match 查询
// match 为模糊查询,只要找到 keyword 里某个分词就能匹配到 GET user/_search { "query": { "match": { "name": "明" } }, "from":0, "size":1 } // 查询 user下 name 字段带有 “明” 的数据 。从0开始,匹配一条
match 也可以做 fuzzy 模糊查询
GET user/_search { "query": { "match": { "name":{ "query": "zhong", "fuzziness": 1 } } } }
match_phrase 短语查询。
结果中的 keyword 必须与 搜索的 keyword 必须连着,顺序也要保持一致
GET user/_search { "query": { "match_phrase": { "name": "ha ha" } } }
multi_match 多字段查询
GET user/_search { "query": { "multi_match": { "query": "imname", "fields": ["name","address"] } } } // 在name和address中查询 GET user/_search { "query": { "multi_match": { "query": "imname", "fields": ["name","address^2"] } } } // 给address权重*2,这样排序就会更靠前
query string (类似match,但是match必须指定字段名)
GET user/_search { "query": { "query_string": { "default_field": "name", // 可以选择是否指定字段名,不指定就索引全部 "query": "明 OR 1" // keyword可以 用 AND OR 等字段 } } }
match_all 查询某个index下所有数据
GET user/_search { "query": { "match_all": {} } } // 查询 user 下所有的数据
2、term 级别查询
term 查询
GET user/_search { "query": { "term": { "name": { "value": "I am value" } } } } // term级别查询,是直接查询,不做分词,不会大小写转换。 // 若是存储时是按照分词存储的话,直接查是查不到的 // 注:分词存储的时候,默认所有分词都会转为小写
range 查询
GET user/_search { "query": { "range": { "age": { "gte": 20, "lte": 30 } } } } // 查询age字段,>=20岁,<=30岁
exists 查询
GET user/_search { "query": { "exists": { "field": "name" } } } // 查询带有name字段的数据
fuzzy 模糊查询
GET user/_search { "query": { "fuzzy": { "name": "zhong" } } } // 即便 zhang 输成 zhong 也能找到 zhang 的数据
3、复合查询
must:必须匹配,查询上下文,加分
should:应该匹配,查询上下文,加分
must_not:必须不匹配,过滤上下文,过滤
filter:必须匹配,过滤上下文,过滤
GET user/_search { "query": { "bool": { "must": [ // state 必须=tn { "term": { "state": { "value": "tn" } } } ], "must_not": [ // gender 必须不能为m { "term": { "gender": { "value": "m" } } } ], "should": [ // name应该有1 { "match": { "name": "1" } } ], "filter": [ // age必须>=10,<=30 { "range": { "age": { "gte": 10, "lte": 30 } } } ] } } }
更新
post 和 put
POST user/_doc/1 { "name":"看看" } PUT user/_doc/1 { "name":"看看" } // post 和 put 都会删除原有数据后,再进行插入。 // version 和 seq_no 都会更新
post 的 _update 更新
POST user/_update/1 { "doc":{ "name":"看看" } } // 会在原有数据上进行增加更新 // 若是里面已经存在该键值对,则不会更新,version 和 seq_no 也不会更新
删除
DELETE user/_doc/1 // 删除 index 下某条数据 DELETE user // 删除整个user
批量插入
POST _bulk {"index":{"_index":"user","_id":"66"}} {"key":"value"} {"index":{"_index":"user","_id":"661"}} {"key":"value"} // 或者 POST _bulk {"create":{"_index":"user","_id":"67"}} {"key1":"value1"} {"create":{"_index":"user","_id":"671"}} {"key1":"value1"}
批量删除
POST _bulk {"delete":{"_index":"user","_id":"661"}}
批量更新
POST _bulk {"update":{"_index":"user","_id":"1"}} {"doc":{"name":"小明"}}

浙公网安备 33010602011771号