Elasticsearch 学习笔记(一)

280 阅读2分钟

这是我参与11月更文挑战的第3天,活动详情查看:2021最后一次更文挑战

官网定义:

Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎

  • 一个分布式的实时文档存储,每个字段 可以被索引与搜索
  • 一个分布式实时分析搜索引擎
  • 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据

相关概念:

ElasticSearch 集群可以 包含多个 索引 ,相应的每个索引可以包含多个 类型 。 这些不同的类型存储着多个 文档 ,每个文档又有 多个 属性 。

mysqlElasticSearch
数据库索引
类型
行数据文档
列数据属性

安装部署

tar.gz 包

# 解压安装包
tar -zxvf elasticsearch-6.7.1.tar.gz
# 官方显示elasticsearch 运行必须是非root用户
# 创建用户组
groupadd elsearch
#创建用户到用户组
useradd elsearch -g elsearch -p elasticsearch
#将安装包中所有文件权限更改为非root用户
chown -R elsearch:elsearch elasticsearch-6.7.1

#配置
#修改配置文件 /conf/elasticsearch.yml

network.host: 0.0.0.0
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"

# 启动
su elsearch
sh ./bin/elasticsearch -d 

可能出现问题

用户文件数量限制 65535

解决方案

vim /etc/security/limits.conf
将65535 改为65536

用户拥有的内存权限太小

解决方案

vim /etc/sysctl.conf
添加一行
vm.max_map_count=262144

上述解决方案都需要重启服务器

CRUD

增加:

image.png

查询

简单查询

查询id为1的员工

image.png

查询所有记录

image.png

搜索姓氏为 Smith 的雇员

  • 方式一

image.png

  • 方式二

image.png

高级查询

查询形式为smith,年龄在10-25

image.png

全文查询

搜索下所有喜欢攀岩(rock climbing)的雇员:

    GET /megacorp/employee/_search

    {
        "query" : {
            "match" : {
                "about" : "rock climbing"
            }
        }
    }

    会得到多个结果,但是会在结果集中进行相应的关键字段排序

    {
        "took": 8,
        "timed_out": false,
        "_shards": {
            "total": 5,
            "successful": 5,
            "skipped": 0,
            "failed": 0
        },
        "hits": {
            "total": 2,
            "max_score": 0.53484553,
            "hits": [
                {
                    "_index": "megacorp",
                    "_type": "employee",
                    "_id": "1",
                    "_score": 0.53484553,
                    "_source": {
                        "first_name": "John",
                        "last_name": "Smith",
                        "age": 25,
                        "about": "I love to go rock climbing",
                        "interests": [
                            "sports",
                            "music"
                        ]
                    }
                },
                {
                    "_index": "megacorp",
                    "_type": "employee",
                    "_id": "2",
                    "_score": 0.26742277,
                    "_source": {
                        "first_name": "Jane",
                        "last_name": "Smith",
                        "age": 32,
                        "about": "I like to collect rock albums",
                        "interests": [
                            "music"
                        ]
                    }
                }
            ]
        }
    }

短语搜索

仅匹配同时包含 “rock” “climbing” ,并且 二者以短语 “rock climbing” 的形式紧挨着的雇员记录。

image.png