栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

【Elasticsearch】Elasticsearch学习文档

【Elasticsearch】Elasticsearch学习文档

Elasticsearch 介绍

Elasticsearch 是一个开源的分布式全文本搜索和分析引擎。它支持RESTful操作,并允许您实时存储,搜索和分析大量数据。
官方文档

官方 Python 库

Elasticsearch
ES Helper

下载 安装 Elasticsearch

官方下载链接

# 安装
dpkg -i elasticsearch-7.10.0-amd64.deb
启动 停止 重启
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
sudo systemctl stop elasticsearch.service
sudo systemctl restart elasticsearch
启用401验证
# 修改配置文件中 network.host 的值为 0.0.0.0 或指定IP
sudo vim /etc/elasticsearch/elasticsearch.yml

# 配置文件最后加上一下三行配置,开启401验证机制
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.license.self_generated.type: basic
设置用户密码
# 通过命令交互设置密码
elasticsearch-setup-passwords interactive
ES 字段类型 元数据字段

metadata fields

_index 文档所属的索引_type 文档映射类型_id 文档唯一ID_source 文档正文的原始Json_size 源字段的字节大小,由映射大小插件提供_field_names 文档中所有非空值字段名_ignored 忽略不正常文档_routing 自定义路由,用于将文档路由到特定的分片_meta 程序特定的元数据 数据字段

Field data types

常规类型

binary base64编码的二进制数据boolean 布尔值(true, false)Keywords 关键字族

keyword 用于结构化内容,例如ID,电子邮件地址,主机名,状态代码,邮政编码或标签constant_keyword 常量关键字wildcard 模糊查询关键字 Numbers 数字类型

long 有符号长整型 64位integer 有符号整型 32位short 有符号短整型 16位byte 字节类型 8位double 双精度浮点型 64位float 单精度浮点型 32位half_float 半精度浮点型 16位scaled_float 缩放浮点数(其实是个整型)unsigned_long 无符号长整型 64位 Dates 日期类型

date 类型说明date_nanos 纳秒日期 类型说明 alias 别名,为已经存在的字段定义别名 对象关系类型

object Json对象flattened 单个字段值的Json对象nested Json对象,保留了子字段之间的关系join 为同一索引中的文档定义父/子关系 结构数据类型

Range 范围类型

integer_range 整型范围类型float_range 浮点数范围类型long_range 长整型范围类型double_range 双精度浮点数范围类型date_range 日期范围类型ip_range IP范围类型文档 ip IPv4和IPv6version 版本类型murmur3 Hash的计算和存储 聚合类型(Aggregate data types)

histogram 数值聚合 全文检索类型(Text search types)

text 非结构化文本annotated-text 包含特殊标记的文本completion 搜索自动补全search_as_you_type 自定义自动完成类型?token_count 标记计数? 文档排名类型(document ranking types)

dense_vector 记录浮点值的密集向量sparse_vector 记录浮点值的稀疏向量rank_feature 记录一个数字特性以提高查询时的命中率rank_features 记录数字特性以提高查询时的命中率 空间数据类型(Spatial data types)

geo_point 纬度和经度geo_shape 复杂的形状,如多边形point 任意笛卡尔点 什么是笛卡尔点shape 任意的笛卡尔几何图形 其他类型

percolator DSL编写的索引查询 新建MAPPINGS

文档

# MAPPING 结构
{"mappings": {"properties": {}}}

# 举个栗子
{
  "mappings": {
    "properties": {
      "age":    { "type": "integer" },  
      "email":  { "type": "keyword"  }, 
      "name":   { "type": "text"  }     
    }
  }
}
查询 叶子查询

match 分词查询term 精确匹配range 范围匹配

# 简单查询,举个栗子
{
  "query": {
    "match": {
      "message": "this is a test"
    }
  }
}
复合查询

must 必须匹配,计分must_not 必须不匹配,计分filter 必须匹配,不计分should 应该匹配(对应OR)

# 举个栗子
{
  "query": {
    "bool" : {
      "must" : {
        "term" : { "user.id" : "kimchy" }
      },
      "filter": {
        "term" : { "tags" : "production" }
      },
      "must_not" : {
        "range" : {
          "age" : { "gte" : 10, "lte" : 20 }
        }
      },
      "should" : [
        { "term" : { "tags" : "env1" } },
        { "term" : { "tags" : "deployed" } }
      ],
      "minimum_should_match" : 1,
      "boost" : 1.0
    }
  }
}

脚本查询

文档

遇到的坑

查询时不指定 size ES默认返回10条数据ES默认最多返回 10000 条数据should 和 must 并列使用,should 看起来不起作用,实际上是和 must 并列使用时 should 沦为了打分选项ES的批量插入真蛋疼,循环单条插入巨慢 报错处理

# 错误内容
the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

# 解决方案
vim /etc/sysctl.conf
# 在最后添加
vm.max_map_count=655360
# 保存后执行
sysctl -p
# 修改配置文件 elasticsearch.yml
# 取消注释保留一个节点
cluster.initial_master_nodes: ["node-1"]
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/762403.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号