elasticsearch 基本语法
基本数据类型:
字符串类型:text、keyword
数值类型:long、integer、short、byte、double、float、half、scaled、float
日期类型:date
布尔值类型:boolean
二进制类型:binary
等等。
========
Rest 风格写法:
PUT localhost:9200/索引名称/类型名称/文档 id 创建文档(指定文档 id)【索引类比“库”,类型类比“表”】
POST localhost:9200/索引名称/类型名称 创建文档(随机文档 id)
POST localhost:9200/索引名称/类型名称/_search 查询所有数据
POST localhost:9200/索引名称/类型名称/文档 id/_update 修改文档
GET localhost:9200/索引名称/类型名称/文档 id 通过id查询文档
DELETE localhost:9200/索引名称/类型名称/文档 id 删除文档
==== 在 kibana 中的写法 ====
创建索引:
创建索引:(类似 mysql 创建库)【也可以通过 postman 使用 PUT 请求,像调用 api 的方式一样来发起请求创建:localhost:9200/test1】 PUT /test1 创建索引的同时设置字段【具体写法,参照官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/keyword.html】 PUT /test1 { "mappings":{ "properties":{ "name":{ "type":"text" }, "age":{ "type":"long" }, "birthday":{ "type":"date" }, } } }
通过 postman 方式请求操作:
添加数据://不指定字段类型,会自动生成默认类型
PUT /test1/type/1 //使用 PUT 或者 POST 都可以 { "name":"mongo", "age":13, "birth":"2022-01-01" }
如果该数据存在,仍继续这样操作,会变成以 id=1 的修改操作,而且是全量修改,就是如果个别参数不传,会直接修改没了
推荐的修改操作,使用 POST 加 _update ,指定什么参数就修改什么参数,不影响其他数据:
POST /test1/type/1/_update { "doc":{ //修改操作,需要套在 doc 这一层 json 里面 "name":"mongo2" } }
删除索引:
DELETE test1
查询操作:
GET _cat/indices?v //查看所有索引信息(类似于查看所有库所有表一样)
GET /mongo //查看索引信息 GET /mongo/user/1 //根据 id = 1 查数据
查询全部数据:
GET /mongo/user/_search
根据一般条件查询:
GET /mongo/user/_search?q=age:23
根据条件查询,并且只查询想要返回的字段://类似:select name,age from user where name = "雪河"
多条件查询:(类似 where name = xx and age = xx)【must -> and;should -> or 】
查询结果排序:(有了排序逻辑之后,_score 分值就会失效,变为 null)
分页查询:
范围查询:gt 大于;gte 大于等于;lt 小于;lte 小于等于
针对某个字段多关键字查询:(利用空格隔开,越匹配的 _score 分值越高)
term 查询:(使用 term 查询某个字段,这个 name 字段的类型如果是普通 text 文本类型,是一个模糊查询;如果 name 是一个 keyword 类型,这里就会变成精确查询 )
多条件精确查询:
keyword 关键字类型和普通 text 文本类型区别:(定义字段的时候,如果定义成 keyword 类型,将不会被分词器拆分,可以利用 term 做精确查询)
自定义关键字高亮: