美文网首页
ElasticSearch7.6.x总结-(前篇)

ElasticSearch7.6.x总结-(前篇)

作者: 晏子小七 | 来源:发表于2021-02-09 16:41 被阅读0次

    ElasticSearch(简称ES)的由来

    基于Lucene(java)开发升级而来。ElasticSearch是基于Lucene做了一些封装和增强,是一个开源的高扩展的分布式全文搜索引擎,它可以近乎实时的存储、检索数据,它是通过简单的RESTful API来隐藏Lucene的复杂性,让全文搜索更加简单。

    谁在使用:

    维基百科,Stack Overflow,GitHub等等

    ELK技术=ES+logStash(采集日志)+Kibana 用于-日志数据分析

    ES、Solr、Lucene的关联与区别:

    • Solr也是基于Lucene开发而来,
    • ES可以使用RestFul,性能方面的提升。
    • es开箱即用,solr安装复杂;
    • solr利用Zookeeper进行分布式管理,ES用的是自身带有分布式的功能;
    • solr支持更多的数据格式:json,xml,csv,es只支持json,但是已经足够我们使用;

    <mark style="box-sizing: border-box;">注意:JDK1.8是最低要求!</mark>

    正文开始:

    官网下载地址:https://www.elastic.co/cn/elasticsearch/

    7.6.2版本:https://www.elastic.co/downloads/past-releases/elasticsearch-7-6-2

    ELK三剑客,都是解压即用.(环境:需要node)

    Windows安装:下载安装包后,解压新建目录

    目录:

    • bin-启动文件
    • config-配置文件
      • log4j2 日志配置文件
      • jvm.options jvm配置
      • elasticsearch.yml es的配置文件,默认9200端口

    启动:

    bin目录直接启动:elasticsearch.bat文件

    访问:9200端口:页面显示

    {
      "name" : "LAPTOP-NML71DV4",
      "cluster_name" : "elasticsearch",
      "cluster_uuid" : "wXf0oB0CS22VXSy_aDP2cg",
      "version" : {
        "number" : "7.6.2",
        "build_flavor" : "default",
        "build_type" : "zip",
        "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
        "build_date" : "2020-03-26T06:34:37.794943Z",
        "build_snapshot" : false,
        "lucene_version" : "8.4.0",
        "minimum_wire_compatibility_version" : "6.8.0",
        "minimum_index_compatibility_version" : "6.0.0-beta1"
      },
      "tagline" : "You Know, for Search"
    }
    
    

    安装可视化界面:es head插件(需要node环境)

    下载地址:https://github.com/mobz/elasticsearch-head

    解压目录:安装D:\Java\elasticsearch\elasticsearch-head-master

    进入目录后:cnpm install

    运行:npm run start (注意:由于master是9100端口,而es为9200端口,会有跨域问题)

    解决跨域:修改elasticsearch.yml,添加如下两行
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    
    

    访问:localhost:9100

    -索引就是数据库,当成数据库页面来看
    (注意:此时cmd可能会锁定,导致手动添加索引卡住,点一下回车键即可)
    -就当作数据库navicat来看,关注-概览,索引,数据浏览即可,后面的查询我们用kibana去做
    

    Kibana(需要版本对应es)

    Kibana是一个针对es的开源分析及可视化平台,用来搜索,查看交互存储再es索引中的数据,可以通过各种图标进行高级数据分析及展示.

    解压后:启动测试:bin-kibana.bat

    默认端口:http://localhost:5601

    汉化:打开config/kibana.yml 修改#i18n.locale: "en"为i18n.locale: "zh-CN"


    ES核心概念

    ES是一个面向文档

    MySQL ES
    数据库 索引
    types(将被弃用)
    documents文档
    字段 fields

    物理设计:ES默认在后台把每个索引划分成多个片,每分分片可以在集群中的不同服务器间迁移,一个人就是一个集群,默认集群名字是elasticsearch.

    文档 --一条条数据

    索引 --数据库

    score-权重-即命中数


    IK分词器

    何为分词? 分词就是把一段种文或者别的划分成一个个关键字,我们搜索的时候就会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后匹配,中文是把每个字堪称一个词.中文建议使用IK分词器.

    IK提供了2个分词器:ik_smartik_max_word,ik_smart为最少切分,ik_max_word为最细粒度划分.

    下载IK分词器(注意与es同版本):https://github.com/medcl/elasticsearch-analysis-ik

    下载完后解压放入es目录下的plugins目录下

    重启es

    使用Kibana分词器测试:打开页面->工具页面

    分别测试2个分词器
    GET _analyze
    {
      "analyzer":"ik_smart",
      "text": "超级喜欢晏子哒哒"
    }
    
    GET _analyze
    {
      "analyzer":"ik_max_word",
      "text": "超级喜欢晏子哒哒"
    }
    
    

    比如'超级喜欢晏子哒哒',这时候晏子哒哒会被分成4个词,而不是我想要的,此时需要自己配置词,加入到分词器的字典中!

    IK分词器增加自己配置: config->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">test.dic</entry>
         <!--用户可以在这里配置自己的扩展停止词字典-->
        <entry key="ext_stopwords"></entry>
        <!--用户可以在这里配置远程扩展字典 -->
        <!-- <entry key="remote_ext_dict">words_location</entry> -->
        <!--用户可以在这里配置远程扩展停止词字典-->
        <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
    </properties>
    
    

    新建test.dic:

    晏子哒哒
    
    

    保存完重启es测试.

    未完待续...

    相关文章

      网友评论

          本文标题:ElasticSearch7.6.x总结-(前篇)

          本文链接:https://www.haomeiwen.com/subject/yolcxltx.html