新增
不指定id,由ES自动生成:<br>POST /index_name/_doc<br>{<br> "字段名": "值",<br> "字段名2": "值2"<br>}
会有幂等性问题,重复执行时,会重复插入同一条数据
指定id:<br>PUT /index_name/_doc/1<br>{<br> "字段名": "值",<br> "字段名2": "值2"<br>}
批量新增<br>POST /index_name/_bulk
修改
POST
更新时,可以只更新局部字段
POST /index_name/_update/{id}<br>{<br> "doc": {<br> "字段名": "xxx"<br> }<br>}
POST /index_name/_update_by_query<br>{<br> "query": {<br> "match": {<br> "字段名": "xxx"<br> }<br> },<br> "script": {<br> "source": "ctx._source.field = 'new_value'"<br> }<br>}
高并发环境下,需要待上这两个参数,确保线程安全<br>POST /index_name/_doc/1?if_seq_no=XX&if_primary_term=YYY<br>{<br> "字段名": "值",<br> "字段名2": "值2"<br>}
PUT
更新时,会覆盖整个文档,所以要写全,否则没更新的字段会被移除
删除
DELETE /index_name/_doc/{id}
DELETE /index_name/_delete_by_query<br>{<br> "query": {<br> "match": {<br> "字段名": "xxx"<br> }<br> }<br>}
批量操作
批量创建<br>POST _bulk<br>{"create":{"_index":"article","_id":3}}<br>{"id":3,"title":"xxx","tags":["xxx","yyy"],...}<br>{"create":{"_index":"article","_id":4}}<br>{"id":4,"title":"xxx","tags":["xxx","yyy"],...}
批量新建或替换<br>POST _bulk<br>{"index":{"_index":"article","_id":3}}<br>{"id":3,"title":"xxx","tags":["xxx","yyy"],...}<br>{"index":{"_index":"article","_id":4}}<br>{"id":4,"title":"xxx","tags":["xxx","yyy"],...}
批量更新<br>POST _bulk<br>{"update":{"_index":"article","_id":3}}<br>{"id":3,"title":"xxx","tags":["xxx","yyy"],...}<br>{"update":{"_index":"article","_id":4}}<br>{"id":4,"title":"xxx","tags":["xxx","yyy"],...}
批量删除<br>POST _bulk<br>{"delete":{"_index":"article","_id":3}}<br>{"delete":{"_index":"article","_id":4}}<br>
也可以将上面的几个组合使用
查询
GET /index_name/_doc/{id}
GET /index_name/_mget<br>{<br> "ids": ["1","2","3"]<br>}
精确匹配<br>GET /index_name/_search<br>{<br> "query": {<br> "term": {<br> "name": "xxx"<br> }<br> } <br>}
全文检索<br>GET /index_name/_search<br>{<br> "query": {<br> "match": {<br> "name": "xxx"<br> }<br> } <br>}
范围检索<br>GET /index_name/_search<br>{<br> "query": {<br> "range": {<br> "age": {<br> "gte": 1,<br> "lte": 10<br> }<br> }<br> } <br>}
组合查询<br>GET /index_name/_search<br>{<br> "query": {<br> "bool": {<br> "must": [<br> {"match": {"字段名1": "xxx"}},<br> {"match": {"字段名2": "yyy"}},<br> ]<br> }<br> } <br>}