地址:127.0.0.1:9200/[索引名]
方法:PUT
{ "settings": { //关键词 索引配置 "number_of_shards": 3, //索引分片数 "number_of_replicas": 1 //索引备份数 } }
新增、修改索引
地址:127.0.0.1:9200/ [索引名] / [类型] /_mapping?pretty
方法:POST、PUT
{ "novel": { //类型名 "properties": { //配置 "name": { "type": "text" }, "author": { "type": "text" }, "startDate": { "type": "date" }, "endDate": { "type": "date" } } } }
地址:127.0.0.1:9200/ [索引名] / [类型] / [指定id]
方法:PUT
指定文档id(唯一索引值指向文档数据)插入格式:
{ "name": "test", "date": "2018-08-29" }
自动产生文档id
地址:127.0.0.1:9200/ [索引名] / [类型]
方法:POST
{ "name": "test", "date": "2018-08-29" }
直接修改文档:
地址:127.0.0.1:9200/ [索引名] / [类型] / [文档id] /_update (修改关键词)
方法:POST
{ "doc": { "name": "测试" } }
脚本修改文档:
地址:127.0.0.1:9200/ [索引名] / [类型名] / [文档id] /_update (修改关键词)
方法:POST
{ "script": { "long": "painless", //ElasticSearch内置脚本语言 "inline": "ctx._source.name = params.name", "params": { "name": "测试" } } }
删除文档
地址:127.0.0.1:9200/ [索引名] / [类型] / [文档id]
方法:DELETE
返回结果部分字段意思:
{ "found": true, //查询陈公公 "_index": "people", //索引名 "_type": "man", //类型 "_id": "1", //文档id "result": "deleted" //删除成功标志 }
删除索引
地址:127.0.0.1:9200/ [索引名]
方法:DELETE
返回结果:
{ "acknowledged": true //删除成功 }
1.简单查询
地址:127.0.0.1:9200/ [索引名] / [类型] / [文档id]
方法:GET
2.查询所有
地址:127.0.0.1:9200/ [索引名] / _search
方法:POST
{ "query": { //关键词 "matach_all": { } //查询该索引下所有数据 }, "from": 1, //指定从哪里返回 "size": 1 //指定返回几条数据 }
3.条件查询
{ "query": { "match": { //查询该索引下所有数据 "tite": "test" //字段以及值 } }, "from": 1, //指定从哪里返回 "size": 1, //指定返回几条数据 "sort": { //排序 "date": { "order": "desc" } } }
返回结果部分意思:
{ "took": 4, //响应时间 毫秒 "hits": { //查询结果 "total": 11 //数据条数 } }
4.聚合查询
地址:127.0.0.1:9200/ [索引名] /_search
方法:POST
{ "aggs": { //聚合查询关键词 "group_by_word_count": { //自定义名字 "terms": { //关键词 "field": "name" //指定聚合字段 } } } }
1)数值统计
{ "aggs": { "group_by_word_count": { //自定义名字 "stats": { //计算关键词可替换为min(最小值sum(和)max(最大值)avg(平均值) "field": "name" //指定聚合字段 } } } }
地址:127.0.0.1:9200/_search
方法:POST
1.子条件查询
1)query context
1.1)全文本查询:针对文本类型数据
1.1.1)模糊匹配:
{ "query": { "match": { // match_phrase(细语匹配) 关键词 "name": "测试" //模糊匹配,分词 } } }
1.1.2)多字段匹配
{ "query": { "multi_match": { "query": "test", //只当查询内容 "fields": ["name","desc"] //对应字段 只要满足其一就返回 } } }
1.2)语法查询
{ "query": { "query_string": { //语法查询 "query": "(test AND 测试) OR 示例", "fields": ["name","desc"] //查询字段不写默认所有的 } } }
1.2)字段级别查询:针对结构化数据,如数字、日期等
{ "query": { "term": { "name": "测试" } } }
1.3)范围查询
{ "query": { "range": { //范围 "sex": { "gte": 20, //大于等于 e 表示等于 "lte": 10 //小于等于 } } } }
2)filter context 数据过滤和缓存数据
{ "query": { "bool": { "filter": { "term": { "name": "test" } } } } }
2.复合条件查询
1)固定分数查询:
地址:127.0.0.1:9200/_search
方法:POST
{ "query": { "constant_score": { "filter": { "match": { "title": "ElasticSearch" } }, "boots": 2 //固定分数 } } }
2)布尔查询
2.1)满足其一
{ "query": { "bool": { "shoule": [ { "match": { "author": "test" } }, { "match": { "title": "ElasticSearch" } } ] } } }
2.2)全部满足
{ "query": { "bool": { "must": [ { "match": { "author": "test" } }, { "match": { "title": "ElasticSearch" } } ] } } }
2.3)全部满足并过滤
{ "query": { "bool": { "must": [ { "match": { "author": "test" } }, { "match": { "title": "ElasticSearch" } } ], "filter": { "term": { "name": "test" } } } } }
2.4)一定不满足的条件
{ "query": { "bool": { "must_not": { "term": { "name": "test" } } } } }