首页 > 其他分享 >ES

ES

时间:2023-11-04 21:57:36浏览次数:33  
标签:name GET testbai 索引 文档 ElasticSearch ES

1、ElasticSearch简介

主要用于全文搜索
Luence是一套信息检索工具的工具包,包含索引结构,读写索引的工具,排序,搜索规则,ElasticSearch是基于Luence做了一些封装和增强。
es是一个开源的高扩展的分布式全文检索和分析引擎,它可以近乎实时的存储、检索数据;扩展性好,可以扩展到上百台服务器,处理PB级别的数据。

ELK技术:ElasticSearch+Logstash+Kibana

大数据:存储+计算

2、ElasticSearch安装

要求:JDK1.8,ElashticSearch客户端,界面工具。
官网:https://www.elastic.co/

目录结构:
  bin:启动文件
  config:配置文件
     log4j2 日志配置文件
     jvm.options java虚拟机相关配置
     ElasticSearch.yml ElasticSearch相关的配置文件,默认端口9200
  lib 相关jar包
  plugins 插件
  

启动:

运行./bin/elasticsearch.bat脚本即可
浏览器中访问 http://localhost:9100/

安装可视化界面es的插件


1.下载地址:https://github.com/mobz/elasticsearch-head
2.启动:npm install
npm run start 
3.连接测试存在跨域问题:
在./config/elasticsearch.yml文件中增加
http.cors.enabled: true 
http.cors.allow-origin: "*"

可以将es当作一个数据库,(索引【库】,文档【表】)

3、ELK

ELK是ElasticSearch、Logstash、Kibana三大开源框架的首字母大写简称,ElasticSearch是实时搜索平台框架;Logstash是ELK的中央数据流引擎,用于从不同的目标(文件/数据存储/MQ)中收集不同的数据格式,经过过滤后输出到不同的目的地(文件/MQ/redis/kafka/elasticsearch);Kibana可以将elasticsearch的数据通过页面展示出来。

3.1 Kibana

Kibana:是针对ElasticSearch的开源分析及可视化平台,用来搜索、查看交互存储在elasticsearch索引中的数据
官网:https://www.elastic.co/cn/kibana/下载(kibana版本需要和es一致),解压安装,bin目录下执行.bat文件
访问测试
http://localhost:5601/?code=568771

3.2 ES核心概念

es是面向文档的,一切都是json
集群
节点
索引:数据库
类型:表(之后会弃用)
文档:行
fields:列

物理设计:elasticSearch在后台会把每个索引分成多个分片,每个分片可以在集群中的不同服务器之间迁移
逻辑设计:包含key:value,是一个json对象,文档不需要依赖预先定义的模式,关系型数据库中需要提前定义字段才能使用
分片
映射
es集群下可以有多个索引(数据库),每个索引下可以有多个类型(表),每个类型下可以有多个文档(行),每个文档中可以包含多个字段(列)

3.3 Rest风格操作

3.3.1索引的基本操作,索引类似数据库
创建索引并插入一条数据:
PUT /索引名/类型名(之后默认是_doc)/文档id
{请求体}

PUT /testbai/_doc/1
{
  "name": "狂神",
  "age": 3
}

创建索引并指定对应的字段和类型:
PUT /testbai2
{
  "mappings": {
    "properties": {
      "name":{
        "type": "text"
      },
      "age":{
        "type": "long"
      },
      "birth":{
        "type": "date"
      }
    }
  }
}

获取索引信息:
GET /testbai

修改数据,使用put,会覆盖原有数据,version会加1,状态变为updated:
PUT /索引名/类型名/文档id
{请求体}

POST /索引名/类型名/文档id/_update
{请求体}

删除索引:
delete 索引名称
delete 索引名称/类型名/文档id
3.3.2文档的基本操作

文档类似数据库的行

添加数据,如果重复put同一个id数据会覆盖,version会更新:
PUT /testuser/user/1
{
  "name": "李四",
  "age": 23,
  "desc": "it,技术宅"
}

获取数据:
GET /testuser/user/1

更新数据:
如果重复put同一个id数据会覆盖,version会更新,如果字段少了,数据会置空:
PUT /testuser/user/1
{
  "name": "李四",
  "age": 23,
  "desc": "it,技术宅"
}

POST _update,推荐这种方式,会更新指定的字段,其他的字段保存不变,如果不加_update会更新指定的字段,其他的字段置空
PUT /testuser/user/1/_update
{
  "doc":{
     "name": "李四"
  }
 
}


条件查询:
GET /testbai/_doc/_search?q=name:xxx


GET /testbai/_search
{
  "query": {
    "match": {
      "name": "李四"
    }
  }
}

GET /testbai/_search
{
  "query": {
    "match": {
      "name": "李四"
    }
  },
  "_source": [
    "name","age"
  ]
}
_source:只查询name和age字段的结果

排序并分页:
GET /testbai/_doc/_search
{
  "query": {
    "match": {
      "name": "李四"
    }
  },
  "sort": [
    {
      "age": {"order": "asc"}
    }
    ],
    "from": "0",
    "size": "1"
}

bool query 查询是把任意多个简单查询组合在一起,每个选项的含义如下:

must:文档必须匹配,该选项下的查询条件,相当于逻辑运算的 AND,且参与文档相关度的评分。
should:文档可以匹配 should 选项下的查询条件也可以不匹配,相当于逻辑运算的 OR,且参与文档相关度的评分。
must_not:与 must 相反,匹配该选项下的查询条件的文档不会被返回;需要注意的是,must_not 语句不会影响评分,它的作用只是将不相关的文档排除。
filter:用于过滤,范围值的查询。
term可精确查询,match会用分词器进行解析

keyword和text类型:
keyword不会被分词器分析,作为一个整体
text会被分词器拆分

高亮显示:
GET testbai/_search
{
  "query": 
  {
    "match":
    {
      "name": "狂神"
    }
  },
  "highlight": {
    "fields": {"name": {}}
  }
  
}

4、倒排索引

关键词到文档id的映射
对文档进行分词,形成词项字典和倒排表的对应关系

标签:name,GET,testbai,索引,文档,ElasticSearch,ES
From: https://www.cnblogs.com/bobstudyjava/p/17335089.html

相关文章

  • es CURL命令
    1.5CRUL命令以命令的方式执行HTTP协议的请求GET/POST/PUT/DELETE示例:访问一个网页curlwww.baidu.comcurl-ott.htmlwww.baidu.com显示响应的头信息curl-iwww.baidu.com显示一次HTTP请求的通信过程curl-vwww.baidu.com执行GET/POST/PUT/DELETE操作curl-XGET/POST/PUT/DEL......
  • ./rmblastn: error while loading shared libraries: libzstd.so.1: cannot open shar
     001、问题, ./rmblastn命令报错如下:./rmblastn:errorwhileloadingsharedlibraries:libzstd.so.1:cannotopensharedobjectfile:Nosuchfileordirectory 002、解决方法  003、测试  参考:01、https://www.modb.pro/db/429704 ......
  • Java拾贝第十六天——其他集合类Properties
    PropertiesProperties是Map的子实现类,其定义如下publicclassPropertiesextendsHashtable<Object,Object>Hashtable是Map接口的一个子类,与Vector一样都是旧的操作类,与HashMap没什么区别。Properties是操作属性文件的一个属性操作类。属性文件中属性都是以字符串表示的键......
  • Numerical Results of TTCGP and iTTCGP
     ......
  • 基于FPGA的Lorenz混沌系统verilog开发,含testbench和matlab辅助测试程序
    1.算法运行效果图预览   将vivado的仿真结果导入到matlab显示三维混沌效果:    2.算法运行软件版本vivado2019.2 matlab2022a 3.算法理论概述      洛伦兹混沌系统是一种非线性动力系统,最初由爱德华·洛伦兹(EdwardLorenz)于1963年引入,它的简单方......
  • Atcoder Grand Contest 016
    给我贺完了?A-Shrinking给定一个串\(s\),每次可以进行如下操作:记串长为\(n\).构造长为\(n-1\)的串\(s'\),满足\(s'_i\)为\(s_i\)或\(s_{i+1}\),令\(s\leftarrows'\).问使\(s\)中所有字符相同的最小操作次数。\(|s|\le100\).按照题意模拟即可,时间复杂度......
  • Pset_EnvironmentalImpactValues
    Pset_EnvironmentalImpactValues环境影响值:以下属性捕获元素的环境影响值。它们对应于Pset_EnvironmentalImpactIndicators中定义的指标。环境影响值是将单位指标值乘以元素的相关数量得出的。  NameTypeDescriptionTotalPrimaryEnergyConsumptionP_SINGLEVALUE / If......
  • AtCoder Beginner Contest 326 (ABC326)
    A.2UP3DOWN直接模拟即可。CodeB.326-likeNumbers枚举,每次拆除百、十、个位,再判断。CodeC.PeakDescription数字线上放置了\(N\)个礼物。第\(i\)个礼物放置在坐标\(A_i\)处。可以在数轴上选择长度为\(M\)的半开区间\([x,x+M)\),并获得其中包含的所有礼物。求:......
  • SpringBoot项目从resources目录读取文件
    SpringBoot从resources读取文件使用Spring给我们提供的工具类来进行读取Filefile=org.springframework.util.ResourceUtils.getFile("classpath:人物模板.docx");可能读取失败,出现如下错误:java.io.FileNotFoundException:classpathresource[人物模板.docx]cannot......
  • Numerical Results of iTTCGP
     ......