ElasticSearch笔记

70 阅读2分钟

创建索引
PUT http://es服务器:9200/索引名称
使用put方法具有幂等性,也就是只能创建一次,第二次报错

创建文档
POST http://es服务器:9200/索引名称/_doc
POST http://es服务器:9200/索引名称/_doc/文档id
POST http://es服务器:9200/索引名称/_create post body: 文档内容(json格式)如: {"name":"lisi","age":"12"}

获取文档
GET http://es服务器:9200/索引名称/_doc /文档id

搜索文档
GET http://es服务器:9200/索引名称/_search/文档id

修改文档(覆盖)
PUT http://es服务器:9200/索引名称/_doc /文档id
put body: 文档内容(json格式)如:
{"name":"lisi","age":"12"}

修改文档(局部更新)
POST http://es服务器:9200/索引名称/_update/文档id
body: 文档内容(json格式)如:
{doc:{"name":"zhangsan"}}

删除文档
PUT http://es服务器:9200/索引名称/_doc /文档id

多条件查询
GET http://es服务器:9200/索引名称/_search

{
  "query": {
    "bool": {
      "must": [  //must表示and ,必须同时满足
        {
          //match_phrase 完整匹配,匹配的值必须完整一致
          //match_all 匹配所有,一般用于全量查询
          "match": { //匹配查询(全文检索)
            "title": "Paris 2023" //默认添加文档的时候回进行分词处理,所有部分内容也可以匹配
          }
        }
      ],
      "filter": [ //根据查询后的结果进行过滤
        {
          "range": {
            "selling_price_min": {
              "gte": 0.01,
              "lte": 100
            }
          }
        }
      ]
    }
  },
  "from": 0,  //分页offset
  "size": 20, //分页size
  "_source": ["id","title","selling_price_min","selling_price_max","selling_price"], //提取字段
  "sort": [ //排序
    {
      "id.keyword": {
        "order": "desc"
      }
    }
  ],
  //高亮显示查询的字段,本质就是对查询的结果加em标签,如: "Sticker | MOUZ <em>Paris 2023</em>"
  "highlight": {
    "fields": {
      "title": {}
    }
  }, 
}

聚合查询

{
  "size": 0,  //不需要查询字段数据设置为0
  "aggs": { //聚合关键字
    "price_group": { //组名,自定义
      "terms": { //分组统计,聚合条件,如:avg,sum,terms等
        "field": "selling_price_min.keyword" //分组字段
      }
    }
  }
}

设置查询字段的规则

PUT user/_mapping
{
  "properties":{
    "name":{ //字段名称
      "type":"text", //字段类型为文本,可以进行分词,全文检索
      "index":true //进行索引,这样就可以进行查询
    },
    "sex":{
      "type":"keyword", //字段类型为关键字,必须完整匹配
      "index":true
    },
    "tel":{
      "type":"text",
      "index":false //不进行索引,这样就不可以查询
    }
  }
}