ElasticSearch 学习笔记

ElasticSearch 基础学习

基本概念

  1. index : 索引 一个索引中可以有多个type (建议一个index中只有一个type , 因为它的存储结构是将一个index的所有type的field整合成一个大的json , 当多个type的field 都不同时,那么一个docment的自己的field是有值的其他的docment的field都是null,这样会浪费很多存储空间,但是在elasticSearch7中将type给忽略了,也就是index下可以直接有docment,这样就不会出现feild为空而造成的存储空间浪费现象)
  2. type : 类型 一个type中可以有很多docment
  3. docment : 文档 es中最小数据存储单元
  4. field : 文档内的一个属性
  5. mapping : 映射 ?
  6. primary shard : 主分片存储 (存储结构详解2)
  7. replica shard : 分片副本,作为主分分片的副本存在,与主分片数据一致(容错与负载)
  8. node : 部署节点,多节点部署会形成集群

倒排索引

  1. 倒排索引:

    id name
    1 北京布鞋
    2 南京布鞋
    3 澳洲皮鞋

    正排索引的搜索是按照一条文档一条文档进行匹配查询(先查id再匹配判断)

    根据以上的正排索引我们会生成按name分词的倒排索引

    name doc1 doc2 Doc3
    北京 1 0 0
    南京 0 1 0
    澳洲 0 0 1
    布鞋 1 1 0

    倒排索引是直接进行匹配判断,获取到文档ID后,根据文档ID再去查询正排索引获取数据

    倒排索引在查询语句分析出后,才去确认创建那个filed的倒排索引

timeout 超时

设置timeout时间,在超过这个时间之后会将这个时间段内查询到的数据返回,后续的还会查询但是不会返回,

所以在查询大量数据的是时候进来使用分片查询

from : 1 ,开始位置1

size : 100 , 查询100条

Query 与 filter 的区别

query 翻译是查询 , 会有相关度计算 (相关度算法后面回解释)

filter 翻译是过滤 , 只有结果没有相关度计算

query

全文检索

  1. 命令

    1. 6 版本 GET /index(索引) /type(类型)/_search
    2. 7 版本 GET /index(索引)/_search
  2. 查询body

    {
         
    	"query":{
         
    		"match":{
         
    			"name":"张三"
    		}
    	}
    }
    
  3. 结果集分析

    {
         
      "took" : 1,
      "timed_out" : false,
      "_shards" : {
         
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
         
        "total" : {
         
          "value" : 1,
          "relation" : "eq"
        },
        "max_score" : 2.271394,
        "hits" : [
          {
         
            "_index" : "user",
            "_type" : "user",
            "_id" : "2",
            "_score" : 2.271394,
            "_source" : {
         
              "name" : "张三",
              "age" : 21,
              "desc" : "这是一个测试用户"
            }
          }
        ]
      }
    }
    
    
    field 描述
    took 查询花费时间单位 毫秒
    timed_out 是否开启timeout
    _shards.total 查询了多少shard
    _shards.successful 成功的查询了多少shard
    _shards.failed 多少个shard没有被查询到
    hits.max_score 最大相关度事多少
    hits.hits 查询结果(是经过封装过后的)
    hits.hits._index 该数据的索引
    hits.hits._type 该数据的类型
    hits.hits._score 该数据的相关度
    hits.hits._id 该docment的ID
    hits.hits._source 该docment的内容

短语检索

  1. 命令与全文检索相同

  2. 查询body

    {
         
      "query":{
         
        "macth_phrase":{
         
          "name":"张三"
        }
      }
    }
    
  3. 结果分析与全文检索一致

高亮检索

  1. 命令与全文检索一致

  2. 查询body

    {
         
    	"query":{
         
    		"match": {
         
    		  "name": "张"
    		}
    	},
    	"highlight": {
         
    	  "fields": {
         
    	    "name": {
         }
    	  }
    	}
    }
    
  3. 结果集分析

    {
         
      "took" : 1,
      "timed_out" : false,
      "_shards" : {
         
        "total" : 1,
        "successful" : 1,
        "skipped" : 0,
        "failed" : 0
      },
      "hits" : {
         
        "total" : {
         
          "value" : 1,
          "relation" : "eq"
        },
        "max_score" : 2.271394,
        "hits" : [
          {
         
            "_index" : "user",
            "_type" : "user",
            "_id" : "2",
            "_score" : 2.271394,
            "_source" : {
         
              "name" : "张三",
              "age" : 21,
              "desc" : "这是一个测试用户"
            },
            "highlight" : {
         
              "name" : [
                "<em>张</em>三"
              ]
            }
          }
        ]
      }
    }
    
    
    field 描述
    highlight 标红字的field
    name index的一个field 与 source中的name是一个意义

分组检索

  1. 命令 同上

  2. 查询body 按name 进行分组

    {
         
    	"aggs": {
         
    	  "group_by_name": {
         
    	    "terms": {
         
    	      "field": "age"
    	    }
    	  }
    	}
    }
    
  3. 结果分析

    {
         
      "took" : 2,
      "timed_out" : false,
      "_shards" : {
         
        "total" : 1,
        "successful" : 1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
elasticsearch 学习笔记包括以下内容: 一、Elasticsearch概述: - Elasticsearch是一种开源的分布式搜索和分析引擎,可以用于快速搜索、分析和存储大量的结构化和非结构化数据。 - Elasticsearch与Solr相比有一些区别,包括用户、开发和贡献者社区的规模和成熟度等方面。 二、Elasticsearch安装: 1. 下载Elasticsearch,可以从官方网站或华为云镜像下载。 2. 安装Elasticsearch。 三、安装head插件: - head插件是一个可视化的管理界面,可以方便地管理和监控Elasticsearch集群。 四、安装Kibana: 1. Kibana是一个开源的数据可视化工具,用于展示和分析Elasticsearch中的数据。 2. 下载Kibana并安装。 3. 启动Kibana并进行访问测试。 4. 可选的汉化操作。 五、ES核心概念理解: - 学习ES的核心概念,包括索引、文档、映射、查询等。 以上是elasticsearch学习笔记的主要内容,希望对你有帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Elasticsearch 学习笔记(上)](https://blog.csdn.net/m0_52691962/article/details/127064350)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值