【2020-04-08】使用 Kibana ES 索引、文档基本操作命令 CURD 

10 篇文章 0 订阅
一、ES 索引 文档基本操作 命令 CURD 
 
ES 镜像地址
 
安装略过

 
使用 IK 分词器
1、ik_smart 最小划分
2、ik_max_word  最细粒度划分
GET _analyze
{
  "analyzer": "ik_smart",
  "text": "中国共产党是一个伟大的组织"
}
 
 
GET _analyze
{
  "analyzer": "ik_max_word",
  "text": "中国共产党是一个伟大的组织"
}
 
IK 分词器增加自己的分词
IKAnalyzer.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
    <comment>IK Analyzer 扩展配置</comment>
    <!--用户可以在这里配置自己的扩展字典 -->
    <entry key="ext_dict">ybs.dic</entry>
     <!--用户可以在这里配置自己的扩展停止词字典-->
    <entry key="ext_stopwords"></entry>
    <!--用户可以在这里配置远程扩展字典 -->
    <!-- <entry key="remote_ext_dict">words_location</entry> -->
    <!--用户可以在这里配置远程扩展停止词字典-->
    <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
 
ybs.dic
狂神说
魏元宝
 
重启ES
 
 
 
ES RestFul 风格
 
关于索引的基本操作
 
 
1、创建一个索引
PUT /索引名/类型名/文档id
{请求体}
 
 
PUT /test1/type1/1
{
  "name": "狂神说",
  "age": 3
}
 
uploading.4e448015.gif转存失败重新上传取消
完成了自动创建索引
 
2、指定字段类型 —— 创建索引规则 mappings
PUT /test2
{
  "mappings": {
    "properties": {
      "name": {
        "type": "text"
      },
      "age": {
        "type": "integer"  
      },
      "birthday":{
        "type": "date"
      }
    }
  }
}
 
3、获取索引规则! 可以通过GET 请求获取具体信息
GET test2
 
4、查看默认信息
PUT /test3/_doc/1
{
  "name": "狂神说",
  "age": 3,
  "birthday": "1997-01-05"
}
 
 
GET test3
 
如果自己的文档字段没有指定,那么ES就会给我们默认配置字段类型
uploading.4e448015.gif转存失败重新上传取消
 
 
扩展:通过命令 ES 索引情况! 通过 _cat/ 可以获得es的当前的很多信息
GET _cat/health
GET _cat/indices?v
 
 
5、修改
修改的话版本号会增加  "_version" : 3, "result" : "updated",
可以通过PUT 或 POST 修改
 
PUT /test3/_doc/1
{
  "name": "狂神说123",
  "age": 3,
  "birthday": "1997-01-05"
}
 
POST /test3/_doc/1/_update
{
  "doc":{
     "name": "狂神说456"
  }
}
 
 
6、删除索引
 
通过 DELETE 命令实现删除、根据请求判断是删除索引还是删除文档记录
DELETE test1
 
使用RestFul 风格操作索引是推荐的操作方法
 
 
 
关于文档的基本操作

 
1、添加数据
PUT /ybs/user/1
{
  "name": "元宝森",
  "age": 23,
  "birthday": "1997-01-05",
  "desc": "一顿操作猛如虎,一看工资2500",
  "tags":["技术宅", "温暖", "直男"]
}
 
 
PUT /ybs/user/2
{
  "name": "张三",
  "age": 23,
  "birthday": "1997-01-05",
  "desc": "法外狂徒",
  "tags":["渣男", "冷冻", "扩列"]
}
 
 
PUT /ybs/user/3
{
  "name": "李四",
  "age": 23,
  "birthday": "1997-01-05",
  "desc": "随便",
  "tags":["靓仔", "冷冻", "扩列"]
}
 
2、 获取数据 GET
 
GET /ybs/user/1
GET /ybs/user/2
GET /ybs/user/3
 
3、更新数据 PUT
PUT /ybs/user/3
{
  "name": "李四五",
  "age": 23,
  "birthday": "1997-01-05",
  "desc": "随便",
  "tags":["靓仔", "冷冻", "扩列"]
}
"_version" : 2, 表示更新的次数
  "result" : "updated",
 
4、POST _update 更新 (推荐使用)
POST /ybs/user/3/_update
{
  "doc": {
    "name": "李四五流",
    "desc": "不随便",
    "tags":["靓仔", "无所谓", "扩列"]
  }
}
 
PUT 如果不传值会覆盖数据,POST灵活性更好
 
5、简单搜索 
GET /ybs/user/3
 
简单的条件查询,可以根据默认的映射规则,产生基本的查询
GET ybs/user/_search?q=name:元宝森
 
6、复杂查询   select(排序,分页,高亮,模糊查询,精准查询)
 
  • "_score" : 0.8630463, 匹配度,值越高,匹配度越高
GET ybs/user/_search
{
  "query": {
    "match": {
      "name": "李四"
    }
  }
}
  • hit:索引和文档的信息,查询的结果总数,查询出来的具体文档,数据中的东西就可以遍历出来了,可以通过score判断谁更加复杂结果。
uploading.4e448015.gif转存失败重新上传取消
  • 输出结果不想要那么多! select name, desc from ----
GET ybs/user/_search
{
  "query": {
    "match": {
      "name": "元宝"
    }
  },
  "_source": ["name", "desc"]
}
我们之后使用Java 操作 Es,所有的方法和对象就是这里面的key!
 
  • 排序 sort 
GET ybs/user/_search
{
  "query": {
    "match": {
      "name": "元宝"
    }
  },
  "sort": [
    {
      "age": {
        "order": "asc"
      }
    }
    ]
}
 
 
  • 分页 from size  从几个开始 返回多少条
GET ybs/user/_search
{
  "query": {
    "match": {
      "name": "元宝"
    }
  },
  "sort": [
    {
      "age": {
        "order": "asc"
      }
    }
    ],
    "from": 0,
    "size": 2
}
 
数据下标是从0开始的
 
/search/{current}/{pagesize}
 
  • 布尔值查询 (多条件查询)
    • must(adn),所有的条件都要符合   where id=1 and name =xxx
    • should (or)两个条件满足其一即可
    • must_not (not)
    • filter 过滤
      • gt  >
      • lt <
      • gte >=
      • ite <=
GET ybs/user/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "name": "元宝"
          }
        },
        {
          "match": {
            "age": 23
          }
        }
      ]
    }
  }
}
 
  • 匹配多个条件 ( 多个条件 空格隔开,只要满足其中一个结果就可以查出,可以通过分值判断
GET ybs/user/_search
{
  "query": {
    "match": {
      "tags": "男 技术"
    }
  }
}
 
  • 精确查询 
    • term 查询时直接通过倒排索引指定的词条进行精确查询
    • 关于分词:
      • term,直接查询精确的词
      • match,会使用分词器解析!(先分析文档,然后再通过分析的文档进行查询)
    • 两个类型
      • text:可以被分词器解析
      • keyword:不能被分词器解析
 PUT testdb
{
  "mappings": {
    "properties": {
      "name": {
        "type": "text"
      },
      "desc":{
        "type": "keyword"
      }
    }
  }
}
 
 
 
 
 
 
PUT testdb/_doc/1
{
  "name": "元宝森",
  "desc": "一顿操作猛如虎,一看工资2500"
}
 
 
PUT testdb/_doc/2
{
  "name": "元宝森1",
  "desc": "一顿操作猛如虎,一看工资3500"
}
 
 
 
 
GET _analyze
{
  "analyzer": "keyword",
  "text": "元宝"
}
 
 
GET _analyze
{
  "analyzer": "standard",
  "text": "元宝森"
}
 
 
 
 
GET testdb/_search
{
  "query": {
    "term": {
      "name": "宝"
    }
  }
}
 
 
GET testdb/_search
{
  "query": {
    "term": {
      "desc": "一顿操作猛如虎,一看工资2500"
    }
  }
}
 
 
 
  • 多个值匹配精确查询
GET testdb/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "t1": "11"
          }
        },
        {
          "term": {
             "t2": "44"
          }
        }
      ]
    }
  }
}
 
 
  • 高亮查询 
    • 在搜索的结果中可以高亮显示
GET ybs/user/_search
{
  "query": {
    "match": {
      "name": "元宝"
    }
  },
  "highlight": {
    "fields": {
      "name":{}
    }
  }
}
 
  • 自定义搜索高亮条件
GET ybs/user/_search
{
  "query": {
    "match": {
      "name": "元宝"
    }
  },
  "highlight": {
    "pre_tags": "<p class='key' style='color:red'>",
    "post_tags": "</p>",
    "fields": {
      "name":{}
    }
  }
}
 
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kibana中,你可以使用Dev Tools或者Console界面来执行命令来创建索引。以下是使用Kibana创建索引命令示例: 1. 使用PUT命令创建索引: ``` PUT /<索引名称> { "settings": { "number_of_shards": <主分片数>, "number_of_replicas": <副本数> }, "mappings": { "properties": { "<字段名称>": { "type": "<字段类型>" }, ... } } } ``` 请将 `<索引名称>` 替换为你想要创建的索引名称,`<主分片数>` 替换为主分片数(整数),`<副本数>` 替换为副本数(整数)。在 `mappings` 部分,你可以定义索引的字段及其类型。 例如,创建一个名为 `my_index` 的索引,具有3个主分片和2个副本,可以使用以下命令: ``` PUT /my_index { "settings": { "number_of_shards": 3, "number_of_replicas": 2 }, "mappings": { "properties": { "field1": { "type": "text" }, "field2": { "type": "keyword" } } } } ``` 2. 使用Create Index API创建索引: ``` POST /_index/<索引名称> { "settings": { "number_of_shards": <主分片数>, "number_of_replicas": <副本数> }, "mappings": { "properties": { "<字段名称>": { "type": "<字段类型>" }, ... } } } ``` 请将 `<索引名称>` 替换为你想要创建的索引名称,`<主分片数>` 替换为主分片数(整数),`<副本数>` 替换为副本数(整数)。在 `mappings` 部分,你可以定义索引的字段及其类型。 例如,创建一个名为 `my_index` 的索引,具有3个主分片和2个副本,可以使用以下命令: ``` POST /_index/my_index { "settings": { "number_of_shards": 3, "number_of_replicas": 2 }, "mappings": { "properties": { "field1": { "type": "text" }, "field2": { "type": "keyword" } } } } ``` 通过执行以上命令,你可以在Kibana中成功创建一个索引

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值