kibana对Elasticsearch操作命令(持续更新)
程序员文章站
2022-03-05 10:09:11
...
基本概念
Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的。
对比(MySQL)关系
索引(indices)----------------------Databases 数据库
类型(type)-------------------------Table 数据表
文档(Document)---------------------Row 行
字段(Field)------------------------Columns 列
映射配置(mappings)字段的数据类型、属性、是否索引、是否存储等特性
ES常用命令
1.创建索引
curl -XPUT http://localhost:9200/music/ #music为索引名称
2.查看全部索引
curl -XGET http://localhost:9200/_cat/indices?v
3.插入文档
curl -H "Content-Type:application/json" -XPUT http://localhost:9200/music/songs/1 -d '{"name":"Deck the Halls","year":1885,"lyrics":"Fa la la la la"}'
4.查看文档
curl -XGET http://localhost:9200/music/songs/1
5.更新文档
ID相同则更新,不同则新增
6.删除文档
curl -XDELETE http://localhost:9200/music/songs/1
7.查看索引下全部记录
curl http://localhost:9200/music/songs/_search
8.删除索引
curl -XDELETE http://localhost:9200/music
9.删除全部索引
curl -XDELETE http://localhost:9200/_all 或者 curl -XDELETE http://localhost:9200/*
IK分词器下载地址
https://github.com/medcl/elasticsearch-analysis-ik/releases
- 下载后解压重命名文件夹为 analysis-ik
- 将该文件夹放入Elasticsearch的plugins目录,重启Elasticsearch
使用kibana常用命令
概念:Elasticsearch采用Rest风格API,因此其API就是一次http请求,你可以用任何工具发起http请求。kibana的控制台,对http请求进行简化。
创建索引的请求格式:
请求方式:PUT
请求路径:/索引库名
请求参数:json格式
----------------------------A.索引操作----------------------------
1.创建索引
#创建--某个test索引
PUT test/
{
"settings":{ 可以不设置默认5和1
"index":{
"number_of_shards":5, 是数据分片数,默认为5,有时候设置为3
"number_of_replicas":1 是数据备份数,如果只有一台机器,设置为0
}
}
}
#删除--某个索引
DELETE test/
#修改--副本数量设置
PUT test/_settings
{
"number_of_replicas":2
}
#查--某个索引
GET test/
#查--所有索引信息
GET _cat/indices?v
#查--test的设置信息
GET test/_settings
#查--所有的设置信息
GET _all/_settings
2.创建映射
索引有了,接下来肯定是添加数据。但是,在添加数据之前必须定义映射。
什么是映射?
映射是定义文档的过程,文档包含哪些字段,这些字段是否保存,是否索引,是否分词等。
映射说明:
PUT /索引库名/_mapping/类型名称(默认_doc类型)
{
"properties": {
"title": { 字段名
"type": "text",
字段类型,text、long、short、date、integer、object、keyword:不可分词
基本数据类型:long、interger、short、byte、double、float、half_float
浮点数的高精度类型:scaled_float等.
"index": true, 是否索引,默认为true
"store": true, 是否存储,默认为false
"analyzer": " ik_max_word" 分词器 ik_max_word和ik_smar
},
}
}
映射示例:
/*******************新增时间类型映射************************/
PUT test/_mapping/goods
{
"properties": {
"title": {
"type": "text",
"analyzer": "ik_max_word"
}
}
/*******************新增时间类型映射************************/
PUT test1/_mapping/_doc
{
"properties": {
"TimeFormat": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
}
}
}
3.查看映射
GET /test/_mapping
type字段类型介绍
String类型,又分两种:
text:可分词,不可参与聚合
keyword:不可分词,数据会作为完整字段进行匹配,可以参与聚合
Numerical:数值类型,分两类
基本数据类型:
long、interger、short、byte、double、float、half_float
浮点数的高精度类型:
scaled_float
需要指定一个精度因子,比如10或100。
elasticsearch会把真实值乘以这个因子后存储,取出时再还原。
Date:日期类型
elasticsearch可以对日期格式化为字符串存储,
但是建议我们存储为毫秒值,存储为long,节省空间。
----------------------------B.数据操作----------------------------
1.增加数据
注:修改必须指定id,id对应文档 存在/不存在,则修改/新增。
如下: id=1存在,则为修改"price":8888.00
//指定id为1
PUT /test/goods/1
{
"title":"华为手机",
"images":"http://image.baidu.com/165422.jpg",
"type": "text",
"price":8888.00
}
2.删除数据
DELETE /索引库名/类型名/id值
#1.删除一条记录(文章)
DELETE /test/goods/1
#2.删除一个type(表)
#DELETE test/goods
#尝试了一下,结果不行,表明ES5不再支持删除type
#3.删除整个 index (库)
DELETE test
3.修改数据
#1.如果存在1则为修改,没有则新增数据
PUT /test/goods/1
{
"title":"华为手机",
"images":"http://image.baidu.com/165422.jpg",
"price":8888.00
}
# 2.相当于update goods set prices = 2000 where id = 1
POST test/goods/1/_update
{
"doc":{
"prices":2000
}
}
#3.修改'包含' tid字段>0,将cate字段赋值=0
POST test/_doc/_update_by_query?confilcts=proceed
{
"query":{
“range”: {
"tid": {
"gt": 0
}
}
},
"script": {
"lang": "painless",
"source": "ctx._source.cate=0"
}
}
#4.修改'不包含' tid字段,将cate字段赋值=1
POST test/_doc/_update_by_query?conflicts=proceed
{
"query":{
"bool":{
"must_not": {
"exists": {
"field": "tid"
}
}
}
},
"script": {
"lang": "painless",
"source": "ctx._source.cate=1"
}
}
4.查看数据
query :代表查询对象
match_all :代表查询所有
match 类型查询,会把查询条件进行分词,然后进行查询,多个词条之间是or的关系。
term 查询被用于精确值 匹配,精确值可能是数字、时间、布尔或者那些未分词的字符串。
查询类型:
例如: match_all , match , term , range 等等
#不同风格写法
#这个语句相当于sql中的 select title,city from goods where id = 1
GET test/goods/1?_source=title,city
#这个语句相当于sql中的 select * from goods where id = 1
GET test/goods/1?_source
#1.查询es库中所有索引
GET _search
{
"query":{
"match_all":{}
}
}
#2.查询test索引 goods类型所有
GET test/goods/_search
{
"query":{
"match_all":{}
}
}
#3.and同时包含 华为和 手机 的词条才会被搜索到
GET /test/goods/_search
{
"query":{
"match": {
"title": {
"query": "华为手机",
"operator": "and"
}
}
}
}
#4.结果过滤_source 只显示title和price字段 只显示0到100数据
GET test/goods/_search
{
"query":{
"match_all":{}
},
“_source”:["title","price"],
"from": 0,
"size": 100
}
GET test/goods/_search
{
"query":{
"term":{
"price":2699.00
},
“_source”:["title","price"],
"from": 0,
"size": 100
}
#5.布尔组合bool 把查询通过 must (与)、 must_not (非)、 should(或)的方式进行组合
GET /test/goods/_search
{
"query":{
"bool":{
"must": {
"match": {
"title": "华为"
}
},
"must_not": {
"match": {
"title": "电视"
}
},
"should": {
"match": {
"title": "手机"
}
}
},
}
}
#6.查包含price 字段 的数据 must_not为不包含
GET test/goods/_search
{
"query":{
"bool":{
"must': {
"exists": {
"field": "price"
}
}
}
},
}
#7.单词条精确匹配(term) 数值精确price字段为2699的数据
GET /test/goods/_search
{
"query":{
"term":{
"price":2699.00
}
}
}
#8.多词条精确匹配(terms) 数值精确price字段多数值的数据
GET /test/goods/_search
{
"query":{
"term":{
"price": [2699.00,2899.00,3899.00]
}
}
}
#9.范围查询(range) 查询找出那些落在指定区间内的数字或者时间
gt 大于
gte 大于等于
lt 小于
lte 小于等于
GET /test/goods/_search
{
"query":{
"range": {
"price": {
"gte": 1000.0,
"lt": 2800.00
}
}
}
#10.模糊查询(fuzzy)title包含手机 fuzziness 来指定允许的编辑距离
GET /test/goods/_search
{
"query":{
"fuzzy": {
"title": "手机",
//"fuzziness":1
}
}
}
#11.过滤(filter) 有查询条件进行过滤
GET /test/goods/_search
{
"query":{
"bool":{
"must":{ "match": { "title": "华为手机" }},
"filter":{
"range":{"price":{"gt":2000.00,"lt":3800.00}}
}
}
}
}
#12.过滤(filter) 没有查询条件,不希望进行评分,直接过滤,我们可以使用 constant_score
GET /test/goods/_search
{
"query":{
"constant_score": {
"filter": {
"range":{"price":{"gt":2000.00,"lt":3000.00}}
}
}
}
#13.单字段排序
GET /bdqn/goods/_search
{
"query": {
"match": {
"title": "华为手机"
}
},
"sort": [
{
"price": {
"order": "desc"
}
}
]
}
#14.多字段排序-----使用 price和 _score(得分) 进行查询,
#并且匹配的结果首先按照价格排序,然后按照相关性得分排序
GET bdqn/goods/_search
{
"query":{
"bool":{
"must":{
"match": {
"title": "华为手机"
}
},
"filter":{
"range":{
"price":{
"gt":200000,"lt":300000
}
}
}
}
},
"sort": [{
"price": {
"order": "desc"
}
},{
"_score": {
"order": "desc"
}
}]
}
上一篇: 大数据---HBase
下一篇: idmp计算任务shell脚本