Elasticsearch记录

本文详细介绍了Elasticsearch的使用,包括ik分词器的配置与验证,倒排索引的工作原理,索引库、文档、映射等核心概念,以及数据聚合和自动补全功能。此外,还讨论了Elasticsearch集群的部署与管理,如分片和备份策略,以及监控工具cerebro的使用。
摘要由CSDN通过智能技术生成

es后台启动命令:./bin/elasticsearch -d
kibana启动命令:nohup ./bin/kibana &

ik分词器

由于默认的分词器对中文并不是很好的支持,所以需要安装分词器(存储时会对文档进行分词,查询时也会对条件进行分词)一般中文使用IK分词器
IK分词器提供了两种分词策略:ik_smart(最少切分,粗粒度)和ik_max_word(最细切分,细粒度)
ik分词器插件安装:https://blog.csdn.net/FebruaryQ/article/details/131731715
验证使用ik分词器的结果:

POST /_analyze
{
   
  "text":"黑马程序员学习java太棒了",
  "analyzer":"ik_smart/ik_max_word"
}

可通过ik分词器的配置文件IKAnalyzer.cfg.xml添加拓展词典和停用词典来定义自己的分词策略(需要分词的和不需要分词的如的、了、啊等语气助词)还可以进行热更新可见官方文档
分词时机:存储和查询时进行分词

1、概述

elasticsearch是一款非常强大的分布式搜索引擎,主要负责数据的存储、搜索和分析;底层由Lucene实现,其是一个java语言的搜索引擎类库
kibana负责数据可视化;logstash和beats负责数据抓取
索引(index):相同类型的文档的集合,如用户索引、商品索引、订单索引等等(相当于数据库表)
文档(document):每条数据就是一个文档(相当于数据库表中的记录)格式为json
映射(mapping):索引中文档的字段约束信息(相当于数据表的结构约束)如字段名称,类型等等
字段(Field):文档中的字段(相当于数据库表中的列)

2、es采用倒排索引

词条(term):文档按照语义分成的词语,注:词条是唯一的不重复的
存储小米手机时其会被分成‘小米’和‘手机’词条并与其文档id进行关联进而存储
查找时会先对小米手机进行分词为‘小米’和‘手机’,之后根据词条查找符合条件的文档id后根据文档id获取其数据(这里的词条和文档id均存在索引)

正向索引概念:
基于文档id创建索引,查询词条时必须先找到文档而后判断是否包含词条。
倒排索引概念:
对文档内容分词,对词条创建索引,并记录词条所在文档的信息。查询时先根据词条查询到文档id,而后获取到文档。

mapping属性:mapping是对索引库中文档的约束(包括字段的类型、是否创建倒排索引等等)常见如下:
(1)type:字段类型
a、字符串:text(可分词的文本)、keyword(精确值,如国家、品牌、ip地址、邮箱地址等)
b、数值:long、integer、short、byte、double、float
c、布尔:boolean
d、日期:date
e、对象:object
f、地理坐标类型
①geo_point:由纬度和经度确定一个点。例如 32.8752345,120.2981567
②geo_shape:由多个geo_point组成的复杂几何图形,如一条直线,“LINESTRING(-77.03635 38.897676,-77009051 38.889939)”
注意:没有数组类型,但是每个字段类型的值可以有多个如"socre":[99.1,99.3,98.5] score实际上需定义为float或double
(2)index:是否创建倒排索引,默认是true
(3)analyzer:使用哪种分词器,和text结合使用
(4)properties:该字段的子字段
(5)字段拷贝
可以使用copy_to属性将当前字段拷贝到指定字段,这样该拷贝字段就拥有了其他被拷贝字段的所有值,可用于多条件搜索,仅仅只是用于搜索而查询时不会查出来,如:

"all": {
   
  "type": "text",
  "analyzer": "ik_max_word"
},
"brand": {
   
  "type": "keyword",
  "copy_to": "all"
},
"name": {
   
  "type": "keyword",
  "copy_to": "all"
}

#测试分词器

POST /_analyze
{
   
  "text":"程序员学习java太棒了",
  "analyzer":"ik_max_word"
}

3、索引库操作

创建索引库

PUT /learn
{
   
  "mappings": {
   
    "properties": {
   
      "info": {
   
        "type": "text",
        "analyzer": "ik_smart"
      },
      "email": {
   
        "type": "keyword",
        "index": "false"
      },
      "name": {
   
        "type": "object",
        "properties": {
   
          "fitstname": {
   
            "type": "keyword"
          },
          "lastname": {
   
            "type": "keyword"
          }
        }
      }
    }
  }
}

#查看索引库

GET /learn

#修改索引库。。注:索引库和mapping一旦创建无法修改,但是可以添加新的字段

PUT /learn/_mapping
{
   
  "properties":{
   
    "age": {
   
      "type": 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值