Windows使用(版本8.11)ElasticSearch、elasticsearch-head、kibana

下载安装引用这篇文章

目录

1、ES基本知识

核心术语

● 索引:index (相当于表)

● 类型:type (相当于表逻辑类型),早版本有类型

● 文档:document (相当于数据库表的行)

● 字段:fields(相当于数据库表列)

核心概念

● 映射:mapping (相当于表结构后定义)

● 近实时:NRT (Near real time)

● 节点:node (每一个服务器)

● shard replica (数据分片与备份)

倒排索引

倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和包含该属性值的各个记录地址。由于不是根据记录来确定属性,而是根据属性来确定记录的位置,所以称之为倒排索引。倒排索引改会在存储数据时将关键词和数据进行关联,保存到倒排表中,然后查询是,将查询内容进行分词后在倒排中进行查询,最后匹配数据即可

ES字典树

字典树又称单词查找树,Trie树,是一种树形结构,是一种哈系树的变种。典型应用于统计,排序和保存大量的字符串。

优点:利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。

3个基本性质:

a. 根节点不包含字符,除根节点外每一个节点都只包含一个字符。

b. 从根节点到某一节点,路径上经过的字符串连接起来,为改节点对应的字符串

c. 每一个节点的所有子节点包含的字符串都不相同。

ES怎么保证读写一致
  1. 更新操作:可以通过版本号使用乐观并发控制,以确保新版本不会被旧版本覆盖

每个文档都有一个_version 版本号,这个版本号在文档被改变时加一。Elasticsearch使用这个 _version 保证所有修改都被正确排序,当一个旧版本出现在新版本之后,它会被简单的忽略。利用_version的这一优点确保数据不会因为修改冲突而丢失,比如指定文档的version来做更改,如果那个版本号不是现在的,我们的请求就失败了。

  1. 新增操作:一致性级别支持 quorum/one/all,默认为 quorum,即只有当大多数分片可用时才允许写操作。但即使大多数可用,也可能存在因为网络等原因导致写入副本失败,这样该副本被认为故障,副本将会在一个不同的节点上重建。

● one:写操作只要有一个primary shard是active活跃可用的,就可以执行

● all:写操作必须所有的primary shard和replica shard都是活跃可用的,才可以执行

● quorum:默认值,要求ES中大部分的shard是活跃可用的,才可以执行写操作

  1. 查询读操作:可以设置 replication 为 sync(默认),这使得操作在主分片和副本分片都完成后才会返回;如果设置replication 为 async 时,也可以通过设置搜索请求参数 _preference 为 primary 来查询主分片,确保文档是最新版本

2、Window启动ES步骤

elasticsearch-8.11.3

1、elasticSearch.bat启动ES

2、浏览器输入地址:http://localhost:9200/ 出入如下启动成功!

3、IK分词器放在如下路径

elasticsearch-head-master

1、使用npm 启动该项目

2、在如下路径下执行 npm run start

3、访问http://localhost:9100 启动成功

kibana-8.11.3

1、kibana.bat 启动

2、package.json 修改版本号与ES一致

3、访问地址:http://localhost:5601/app/dev_tools#/console 启动成功

3、Kibana 调用ES API示例

javascript 复制代码
# ik_smart分词
GET /_analyze
{
    "analyzer":"ik_smart",
    "text":"我爱你,特靠谱"
}


#测试ik_max_word分词
GET /_analyze
{
    "analyzer":"ik_max_word",
    "text":"我爱你,特靠谱"
}

#新建索引
PUT helloes
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 2
  }
}

#查看指定索引信息
GET /helloes

# 查看所有索引信息
GET *

# 删除索引
delete /helloes

#查看索引是否存在
HEAD /helloes

# 创建映射字段(PUT /索引库名/_mapping/类型名称)
PUT /helloes/_mapping
{
    "properties": {
    "title": {
      "type": "text",
      "analyzer": "ik_smart"

    },
    "images": {
      "type": "keyword",
      "index": "false"
    },
    "price": {
      "type": "float"
    }
  }
}

#查看映射关系
GET /helloes/_mapping

#创建文档
POST /helloes/_doc
{ 
 "title":"小米手机",
    "category":"小米",
    "images":"http://www.gulixueyuan.com/xm.jpg",
    "price":3999.00
}

#创建文档自定义ID
POST /helloes/_doc/1
{ 
 "title":"小米手机",
    "category":"小米",
    "images":"http://www.gulixueyuan.com/xm.jpg",
    "price":3999.00
}

# 文档查询
GET /helloes/_doc/1


#搜索当前索引下所有数据
GET /helloes/_search

# 删除文档
DELETE /helloes/_doc/1

#文档修改 (数据不存在则新增)
POST /helloes/_doc/1
{
  "title":"华为手机2",
    "category":"华为",
    "images":"http://www.gulixueyuan.com/hw.jpg",
    "price":1999.00
}

#修改局部信息
POST /helloes/_update/1
{
  "doc": {
     "title":"小米手机",
  "category":"小米"
  }
}


#URL拼接条件查询
GET /helloes/_search?q=category:小米

# JSON 格式查询(全文检索)
 GET /helloes/_search
 {
   "query": {
     "match": {
       "category": "小"
     }
   }
 }

# JSON请求提查询所有数据
GET /helloes/_search
{
  "query": {
    "match_all": {}
  }
}

# 查询返回指定字段
GET /helloes/_search
{
  "query": {
    "match_all": {}
  },
  "_source": ["title"]
}

# 分页查找 from:页码, size:页面调试
GET /helloes/_search
{
  "query": {
    "match_all": {}
  },
  "from": 0,
  "size": 20
}


#查询排序
GET /helloes/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "price": {
        "order": "desc"
      }
    }
  ]
}

# 多条件查询
GET /helloes/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "title": "小米"
          }
        },{
          "match": {
            "price": "1999"
          }
        }
      ]
    }
  }
}

# 值完全匹配
GET /helloes/_search
{
  "query": {
    "match_phrase": {
      "title": "小米"
    }
  }
}


# 高亮查询
GET /helloes/_search
{
  "query": {
    "match_phrase": {
      "category": "米"
    }
  },
  "highlight": {
    "fields": {
      "category": {}//<----高亮这字段
    }
  }
}

#分组查询
GET /helloes/_search
{
 "aggs":{//聚合操作
  "price_group":{//名称,随意起名
   "terms":{//分组
    "field":"price"//分组字段
   }
  }
 }
}
相关推荐
Jtti1 小时前
Windows系统服务器怎么设置远程连接?详细步骤
运维·服务器·windows
lzhlizihang1 小时前
【Hive sql 面试题】求出各类型专利top 10申请人,以及对应的专利申请数(难)
大数据·hive·sql·面试题
Tianyanxiao1 小时前
如何利用探商宝精准营销,抓住行业机遇——以AI技术与大数据推动企业信息精准筛选
大数据·人工智能·科技·数据分析·深度优先·零售
大数据编程之光1 小时前
Hive 查询各类型专利 top10 申请人及专利申请数
大数据·数据仓库·hive·hadoop
小奥超人1 小时前
PPT文件设置了修改权限,如何取消权?
windows·经验分享·microsoft·ppt·办公技巧
GDDGHS_1 小时前
大数据工具 flume 的安装配置与使用 (详细版)
大数据·flume
Acrelhuang3 小时前
安科瑞5G基站直流叠光监控系统-安科瑞黄安南
大数据·数据库·数据仓库·物联网
皓7413 小时前
服饰电商行业知识管理的创新实践与知识中台的重要性
大数据·人工智能·科技·数据分析·零售
Mephisto.java3 小时前
【大数据学习 | kafka高级部分】kafka的kraft集群
大数据·sql·oracle·kafka·json·hbase
Mephisto.java3 小时前
【大数据学习 | kafka高级部分】kafka的文件存储原理
大数据·sql·oracle·kafka·json