ES7 基础语法学习

个人学习笔记,谢绝转载!!!

原文:https://www.cnblogs.com/wshenjin/p/15079858.html


索引的操作

查看所有索引:

GET /_cat/indices?v

创建索引:

PUT /索引名称

PUT /people
{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "people"
}

删除索引 :

DELETE /索引名称

DELETE /ecommerce
{
  "acknowledged" : true
}

给索引插入数据:

##自动创建ID
POST /索引名称/_doc
##指定id,插入or更新
POST /索引名称/_doc/id
PUT /索引名称/_doc/id

POST /people/_doc {
    "name":"lala",
    "age":19
}


POST /people/_doc/3 {
    "name":"gaga",
    "age":19
}   

PUT  /people/_doc/4 {
    "name":"kaka",
    "age":19
}          

更新指定字段:

POST /索引名称/_update/id {
    "doc":{
        // 更新内容
    }
}

POST /people/_update/4 {
    "doc": 
    {"age":30}
} 

##支持简单脚本
POST /people/_update/5 {
    "script": "ctx._source.age += 10"
}

删除数据:

DELETE /索引名称/_doc/id

DELETE /people/_doc/4 

查询数据:

# 查询所有
GET /索引名称/_search
# 根据ID查询
GET /索引名称/_doc/id

GET /people/_doc/4

Query String

查询全部:

GET /索引名称/_search

字段说明:

  • took:耗费了几毫秒
  • timed_out:是否超时
  • _shards:数据拆成几个分片(以及成功/失败的分片计数),所以对于搜索请求,会打到所有的primary shard(或者是它的某个replica shard也可以)
  • hits.total:查询结果的数量,即几个document
  • hits.total.value:确切总命中计数的值
  • hits.total.relation:
  • hits.max_score:score的含义,就是document对于一个search的相关度的匹配分数,越相关,就越匹配,分数也高
  • hits.hits:包含了匹配搜索的document的详细数据
  • hits.sort:结果排序键

简单按条件查找:

##查找name为“gigi”的记录
GET /people/_search?q=name:"gigi"

##查找name为“gigi”的记录,只返回name,age两个字段
GET /people/_search?q=name:"gigi"&_source=name,age

##查找name为“gigi”的记录,只返回name,age两个字段,并按年龄降序
GET /people/_search?q=name:"gigi"&_source=name,age&sort=age:desc

##查找name为“gigi”并且age为18的记录
GET /people/_search?q=name:"gigi"&q=age:20'

Query DSL

查询全部:

GET /索引名称/_search {
    "query": { "match_all": {} }
}

按条件查找:

##查找name为“gigi”的记录
GET /people/_search {
    "query": { 
        "match": { "name": "gigi" }
    }
}

返回特定字段:

##查找name为“gigi”的记录,只返回name,age两个字段
GET /people/_search {
    "query": { 
      "match": { "name": "gigi"} 
    }, 
    "_source" : ["name", "age"] 
}

排序:

##查找name为“gigi”的记录,只返回name,age两个字段,并按年龄降序
GET /people/_search {
    "query": { 
      "match": { "name": "gigi"} 
    }, 
    "_source" : ["name", "age"],
    "sort": [ 
        {
            "age" : {"order": "desc"}
        }
    ]
}

分页查询:

GET /people/_search {
  "query": {
    "match_all": {}
  },
  "from": 2,
  "size": 2
}

- from 从第几条开始,起始为0
- size 返回多少条记录

bool查询:

##搜索address中包含"mill"或"lane"的文档:
GET/bank/_search {
    "query" : {
        "match" : { "address" : "mill lane"} 
    }
}

##搜索address中包含"mill"和"lane"的文档:
GET /bank/_search {
    "query" : { 
        "bool" : { 
            "must" : [ { 
                    "match" : { "address" : "mill" }
                }, 
                { 
                    "match" : { "address" : "lane" } 
                } 
           ]
       }
    }
}


##搜索address中既不包含"mill"也不包含"lane"的文档:
GET /bank/_search {
    "query" : { 
        "bool" : { 
            "must_not" : [ { 
                    "match" : { "address" : "mill" }
                }, 
                { 
                    "match" : { "address" : "lane" } 
                } 
           ]
       }
    }
}

##搜索年龄40岁并且state中不包含ID的文档:
GET /bank/_search { 
    "query" : { 
        "bool" : { 
            "must" : [ {
                "match" : { "age" : "40" } 
                } 
            ],
            "must_not" : [ {
                "match" : { "state" : "ID" } 
                } 
            ] 
        }
    }
}

range查询:

##搜索20000=<balance<=30000的文档:
GET /bank/_search {
    "query" : { 
        "bool" : { 
            "must" : { "match_all" : {} 
        }, 
        "filter" : { 
            "range" : { "balance" : {
                "gte" : "20000",
                "lte" : "30000" } 
                 } 
             }
        }
    }
}

参考

https://www.cnblogs.com/vchar/p/13458525.html

原文地址:https://www.cnblogs.com/wshenjin/p/15079858.html