Elasticsearch(保姆级)小白半小时掌握

2 篇文章 0 订阅
1 篇文章 0 订阅

一、什么是:Elasticsearch

1、Elasticsearch是一个开源的搜索和分析引擎,它可以帮助你在大量数据中快速地查找和分析数据。它支持多种数据格式,包括 JSON、XML 和 CSV,并提供了丰富的 query language(Query DSL)来定义搜索条件和分析规则。

优点:可以添加节点来处理大量额高流量,负载均衡

2、有啥用:实现搜索和分析
3、为什么用:
1.因为他可以横向拓展,可拓展性强(可添加节点来扩容)

2.支持大量数据的搜索还可以多线程并发

3.有可视化界面,便于理解和操作。

二、什么是分词器:

分词器是专门处理分词的组件,分词器由以下三部分组成:

  • Character Filters:针对原始文本处理,比如去除 html 标签

  • Tokenizer:按照规则切分为单词,比如按照空格切分

  • Token Filters:将切分的单词进行加工,比如大写转小写,删除 stopwords,增加同义语

    ES 内置了许多分词器:

    • Standard Analyzer - 默认分词器,按词切分,小写处理

    • Simple Analyzer - 按照非字母切分(符号被过滤),小写处理

    • Stop Analyzer - 小写处理,停用词过滤(the ,a,is)

    • Whitespace Analyzer - 按照空格切分,不转小写

    • Keyword Analyzer - 不分词,直接将输入当做输出

    • Pattern Analyzer - 正则表达式,默认 \W+

    • Language - 提供了 30 多种常见语言的分词器

    • Customer Analyzer - 自定义分词器


      ES分词器:Stamdard Analyzer(ES默认的分词器)

      输出方式:它会对输入的文本按词的方式进行切分,切分好以后会进行转小写处理,默认的 stopwords 是关闭的

2.1插件:elasticSearch-head

这是什么:也是一个可视化的界面,监管es的集群和状态

有什么用:可以监管,而且可视化,容易操作,还可以管理和操作es,分词

怎么启动:grunt server

2.2:IK分词器

为什么要用ik:

ElasticSearch 内置的分词器对我们中文使用并不友好,不能按我们的语言习惯进行分词。

ik提供中文两种分词

ik_smart :(最粗)当前切分 算法为最少切分法 何为最少切分呢,即按照其自身词典,尽可能的减少切分次数(即分词不会非常详细)进项分词 ,不会出现 一个字多个词使用的情况下 例如 成都市 最少切分可能为 成都、市 或者成都市 一个词

ik_max_word:(最细)当前切分方法 为最细粒度切分 ,会根据其字典 尽最大可能切分 切分的非常详细 例如 切分 成都市 可能切分出 成都、都市、市等几个词

可以自定义词典。


analyzer:要执行的格式k_smart 、ik_max_word

text:要分词的内容

1)最少切分:

得到分词

 

2)最细粒度划分

得到:

2.3:安装kibana可视化根据dev tools

端口:http://localhost:5601/

作用:调试ElasticSearch查询表达式,分析ElasticSearch查询表达式性能,调试grok。

三、sdl简单的增删改查:

创建:

PUT movies
{
  "mappings": {
    "properties": {
      "title": {
          "type": "text",
          "analyzer":"ik_max_word",
          "search_analyzer":"ik_smart"
        },
        "year": {
          "type": "date",
          "format": "yyyy"
        },
        "type": {
          "type": "text",
          "index": false
        },
        "star": {
          "type": "float",
          "fields":{
            "keyword":{
                "type":"keyword"
            }
          }
        },
        "director": {
          "type": "keyword"
        }
      }
    },
"settings": {
    "index": {
      "number_of_shards": 5,
      "number_of_replicas": 1
    }
  }
}

注意:创建索引时:

type=keyword:不能被分词

index=ture:可以被索引

number_of_shards: 索引创建的分片数量 number_of_replicas:每个分片的副本(即副本)数量

1)分页查询

{
    "query": {
        "match_all": {
          
        }
    },
    "from":1,//哪页开始
    "size":2,//每页几条
    "sort": {//排序
        "uid": {
          "order"  :"asc"
        }
    }
​
}

2、match匹配:全文检索和完全匹配

3、query:查询

4、高亮显示:

"height":{
"fields":{
"需要高亮的字段":{}
}

5、聚合查询:agg

{
    "aggs":{//聚合操作
        "price_group":{//名称,随意起名
            "terms":{//分组
                "field":"price"//分组字段
            }
        }
    }
}
​

6、多表

GET /index/_search
{
  "size": 0,
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "table1.column1": "value1"
          }
        },
        {
          "join": {
            "table2": {
              "column2": "column1"
            }
          }
        }
      ]
    }
  }
}

四、整合Java实现搜索

1、全文搜索:match、multi_match

单字段或者多字段

2、精确查询:term

3、分页、排序 form、size,sort

·····

聚合:聚合就是对文档数据的统计、分析、技术。

常见的聚合种类:

Bucket:对文档数据分组,并统计每组数量

Metric:对文档数据做计算,例如:avg

Pipeline:基于其他聚合结果再做聚合

参与聚合的字段类型必须是:keyword,数值,日期,布尔。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值