Elasticsearch7.6.x:使用详解

2020-06-22  本文已影响0人  简书网abc

1,基于Rest风格的增删改查

method url地址 描述
PUT|POST :9200/索引名称/类型名称/文档id 创建文档(存在即修改)
POST :9200/索引名称/类型名称 创建文档 (随机文档id)
POST :9200/索引名称/类型名称/文档id/_update 修改文档
DELETE :9200/索引名称/类型名称/文档id 删除文档
GET :9200/索引名称/类型名称/文档id 查询文档通过文档id
POST :9200/索引名称/类型名称/_search 查询所有数据

2,创建具体数据类型映射的索引

PUT /test2
{
    "settings": {
          "number_of_shards": "3",
          "number_of_replicas": "0"
    },
   "mappings": {
         "properties": {
              "name":{
                "type": "text"
              },
              "age":{
                "type": "long"
              },
              "birthday":{
                "type": "date"
              }
        }
  }
}

3,删除索引

DELETE /test2

4,新增操作

有文档ID的新增操作,若该id在库中存在,则覆盖式修改
put | post /test2/_doc/1 
{
    "name":"liming",
    "age":28,
    "sort":33
}
无文档id的新增操作
post /test2/_doc/
{
    "name":"page",
    "page":28
}

5,更新:

PUT方法会覆盖原有数据,若新数据为空同样覆盖,建议使用POST /…/_update不会覆盖原有数据

如果id存在,无论post还是put方法,都会覆盖原有的数据
PUT|post /test2/_doc/1
{
  "name":"狂神",
  "age":23,
  "birthday":"1997-12-01"
}
该方法不会覆盖原有数据,建议使用该方法
POST /test2/_doc/1/_update
{
  "doc":{
    "name":"法外狂徒"
  }
}

6,查询所有数据

POST|GET /test2/_doc/_search

6.1 match为模糊查询,会进行相应的分词操作,term为精准查询

POST|GET /test2/_search
{
  "query": {
    "match": {
      "name": "神"
    }
  }
}

6.2 排序与分页

from为查询的开始,size为查询返回个数

POST|GET  /test2/_search
{
  "query": {
    "match": {
      "name": "神"
    }
  },
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ],
  "from": 0,
  "size": 10
}

6.3布尔查询

must相对于and

POST|GET  /test2/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "神"
          }
        },
        {
          "match": {
            "age": "25"
          }
        }
      ]
    }
  },
  "from": 0,
  "size": 10
}

should相对于or

POST|GET  /test2/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "name": "神"
          }
        },
        {
          "match": {
            "age": "25"
          }
        }
      ]
    }
  },
  "from": 0,
  "size": 10
}

must_not相对于not

POST|GET  /test2/_search
{
  "query": {
    "bool": {
      "must_not": [
        {
          "match": {
            "name": "神"
          }
        },
        {
          "match": {
            "age": "25"
          }
        }
      ]
    }
  },
  "from": 0,
  "size": 10
}

过滤器与多条件查询(有过滤器,必须先满足过滤器)
gt 大于,gte 大于等于,lt 小于,lte 小于等于!

POST|GET  /test2/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "name": "神"
          }
        },
        {
          "match": {
            "name": "wuhan"
          }
        }
      ],
      "filter": {
        "range": {
          "age": {
            "gt": 25
          }
        }
      }
    }
  },
  "from": 0,
  "size": 10
}

同字段 or 搜索

POST|GET  /test2/_search
{
  "query": {
    "match": {
      "name": "想 神"
    }
  },
  "from": 0,
  "size": 10
}

keyword和text

keyword不会被分词器拆分,text类型会

GET _analyze
{
"analyzer": "keyword",
"text":"狂神说"
}

GET _analyze
{
"analyzer": "standard",
"text":"狂神说"
}

上一篇下一篇

猜你喜欢

热点阅读