ElasticSearch基础 增删改查进阶归纳
1.批量操作 _bulk
POST /customer/external/_bulk {"index":{"_id":3}} {"name":"John Doe3"} {"create":{"_id":4}} {"name":"John Doe3"} //data每2个json绑定数据 第1json指定文档 第2json绑定前1个json数据 //后面同上 //也可以把指定的索引 文档 写在下面json中 如下 POST _bulk { "delete" : { "_index" : "customer", "_id" : "4" } } { "field1" : "value1" } { "delete" : { "_index" : "test", "_id" : "2" } } { "create" : { "_index" : "test", "_id" : "3" } } { "field1" : "value3" } { "update" : {"_id" : "1", "_index" : "test"} } { "doc" : {"field2" : "value2"} }
2.检索操作 _search
参考官方文档https://www.elastic.co/guide/en/elasticsearch/reference/7.4/getting-started-search.html 查询条件可以选择放url?xx= 后面 也可以放在json中 如 GET /bank/_search?q=*&sort=account_number:asc 如 GET /bank/_search { "query": { "match_all": {} }, "sort": [ { "account_number": "asc" } ] }
GET /bank/_search {"query": { //查询条件 "match_all": {} }, "sort": [ //排序方式 { "age": "desc" //按age字段降序 } ] , "from": 0, //分页从第0条获取 "size": 20, //共拿20条数据 "_source": "{age}" //返回age字段 返回多个用["age","name"]这种数组表示 }
//下面对query的api说明(重点!!!!!!!!!!!!!!!!) //1.查询出所有match_all "query": { "match_all": {} }, //2.match分词匹配 匹配查询字段 name字段有包含‘王’‘李’关键字被查出来 "query": { "match": { "name": "王李" } }, //3.match_phrase短语匹配 匹配'王李'这个词 不做分词去查
//建议在全文检索时用match_phrase 精确匹配时使用term "match_phrase": { "name": "王李" } //4.mul ti_match多字段匹配 字段firstname或字段lastname包含‘王’‘李’关键字被查出 有做分词 "multi_match": { "query": "王李", "fields": ["firstname","lastname"] } //5.bool多条件匹配 来组合多个查询条件 外层加个bool 里面must表示必须匹配 must_not表示必须不匹配 should表示可以匹配 再把条件match写在里面 "query": { "bool": { "must": [ {"match": { "FIELD": "TEXT" }} ], "must_not": [ {"match": { "FIELD": "TEXT" } } ], "should": [ {"match": { "FIELD": "TEXT" }} ] }, }
//全文检索用match 精确查询最好用term 如: {"query": { "term": { "age":20 } }}
3.聚合索引
4.mapping映射