我的编程空间,编程开发者的网络收藏夹
学习永远不晚

微服务-Elasticsearch基础篇【内含思维导图】

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

微服务-Elasticsearch基础篇【内含思维导图】

一、Elasticsearch入门

1. Elasticsearch介绍

【摘自百度百科】    

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤首先用户将数据提交到Elasticsearch 数据库中再通过分词控制器去将对应的语句分词将其权重分词结果一并存入数据当用户搜索数据时候再根据权重将结果排名打分再将返回结果呈现给用户。
        Elasticsearch是与名为Logstash的数据收集和日志解析引擎以及名为Kibana的分析和可视化平台一起开发的。这三个产品被设计成一个集成解决方案称为“Elastic Stack”以前称为“ELK stack”。
        Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索具有接近实时的搜索并支持多租户。Elasticsearch是分布式的这意味着索引可以被分成分片每个分片可以有0个或多个副本。每个节点托管一个或多个分片并充当协调器将操作委托给正确的分片。再平衡和路由是自动完成的。相关数据通常存储在同一个索引中该索引由一个或多个主分片和零个或多个复制分片组成。一旦创建了索引就不能更改主分片的数量。
        Elasticsearch使用Lucene并试图通过JSON和Java API提供其所有特性。它支持facetting和percolating如果新文档与注册查询匹配这对于通知非常有用。另一个特性称为“网关”处理索引的长期持久性#xff1b;例如在服务器崩溃的情况下可以从网关恢复索引。Elasticsearch支持实时GET请求适合作为NoSQL数据存储但缺少分布式事务。


2. Lucene介绍

摘自百度百科

Lucene是apache软件基金会 jakarta项目组的一个子项目是一个开放源代码的全文检索引擎工具包但它不是一个完整的全文检索引擎而是一个全文检索引擎的架构提供了完整的查询引擎和索引引擎部分文本分析引擎英文与德文两种西方语言。Lucene的目的是为软件开发人员提供一个简单易用的工具包以方便的在目标系统中实现全文检索的功能或者是以此为基础建立起完整的全文检索引擎。Lucene是一套用于全文检索和搜寻的开源程式库由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。人们经常提到信息检索程序库虽然与搜索引擎有关但不应该将信息检索程序库与搜索引擎相混淆。


3. 什么是Elasticsearch

一个开源分布式搜索引擎可以用来实现搜索、日志统计、分析、系统监控等功能帮助我们从海量数据中快速找到需要的内容。


4. 什么是elastic stackELK

是以elasticsearch为核心的技术栈包括beats、Logstash、kibana、elasticsearch

被广泛应用在日志数据分析、实时监控等领域。

5. 什么是Lucene

Lucene是Apache的开源搜索引擎类库提供了搜索引擎的核心API

Lucene是一个Java语言的搜索引擎类库Apache公司的顶级项目由DougCutting于1999年研发。

6. 面试题

       关于“谈谈你对 ES 的理解”

       Elasticsearch 简称 ES 。它是建立在全文搜索引擎库 Apache Lucene 基础之上的

一个开源的搜索引擎也可以作为 NoSQL 数据库存储任意格式的文档和数据。也可

以做大数据的分析是一个跨界开源产品。

它最主要的应用场景是 ELK 的日志分析系统。  

另外它还有以下特点  

1. 第一、采用 Master-slave 架构实现数据的分片和备份  

2. 第二、使用 Java 编写并对 Lucene 进行封装隐藏了 Lucene 的复杂性  

3. 第三、能胜任上百个服务节点的扩展并支持 PB 级别的结构化或者非结构化数据  

4. 第四、ES 提供的 Restful API不仅简化了 ES 的操作还支持任何语言的客户端  

提供 API 接口另外 Restful API 的风格还实现了 CURD 操作、创建索引删除索  

引等功能。  


二、正向索引和倒排索引

1. 什么是正向索引

正向索引是最传统的根据id索引的方式。但根据词条查询时必须先逐条获取每个文档然后判断文档中是否包含所需要的词条是根据文档找词条的过程。

正向索引是以关键字为主码查询时需要遍历每一个文件。每个文件都对应一个文件ID文件内容被表示为一串关键词的集合。实际上在搜索引擎索引库中关键词也已经转换为关键词ID。

举例传统数据库如MySQL采用正向索引

如果是根据id查询那么直接走索引查询速度非常快。


2. 倒排索引

2.1 什么是倒排索引

【摘自百度百科】

倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值而是由属性值来确定记录的位置因而称为倒排索引(inverted index)


2.2 倒排索引相关概念

文档document用来搜索的数据其中的每一条数据就是一个文档

词条Term对文档数据或用户搜索数据利用某种算法分词得到的具备含义的词语


2.3 如何创建倒排索引

       创建倒排索引是对正向索引的一种特殊处理

  • 将每一个文档的数据利用算法分词得到一个个词条

  • 创建表每行数据包括词条、词条所在文档id、位置等信息

  • 因为词条唯一性可以给词条创建索引例如hash表结构索引



2.4 倒排索引的搜索流程

倒排索引的搜索流程如下以搜索"华为手机"为例

  1. 用户输入条件"华为手机"进行搜索。

  2. 对用户输入内容分词得到词条华为手机

  3. 拿着词条在倒排索引中查找可以得到包含词条的文档id1、2、3。

  4. 拿着文档id到正向索引中查找具体文档



3. 正向索引和倒排索引

正向索引

  • 优点

    • 可以给多个字段创建索引

    • 根据索引字段搜索、排序速度非常快

  • 缺点

    • 根据非索引字段或者索引字段中的部分词条查找时只能全表扫描

倒排索引

  • 优点

    • 根据词条搜索、模糊搜索时速度非常快

  • 缺点

    • 只能给词条创建索引而不是字段

    • 无法根据字段做排序


三、Elasticsearch基本概念

1.什么是文档document

一条数据就是一个文档在Elasticsearch中是按照Json格式存放

2. 什么是字段Field

Json文档中的字段

3. 什么是索引Index

通类型文档的集合

4. 什么是映射mapping

索引中文档的约束比如字段名称、类型

5. Elasticsearch和MySQL的对比

MySQLElasticsearch说明
TableIndex索引(index)就是文档的集合类似数据库的表(table)
Rowdocument文档document就是一条条的数据类似数据库中的行Row文档都是JSON格式
ColumnField字段Field就是JSON文档中的字段类似数据库中的列Column
SchemaMappingMapping映射是索引中文档的约束例如字段类型约束。类似数据库的表结构Schema
SQLDSLDSL是elasticsearch提供的JSON风格的请求语句用来操作elasticsearch实现CRUD

四、Elasticsearch的安装

本章主要介绍了  基于Docker安装Elasticsearch、Kibana、IK分词器

请跳转我的另外一篇博客文章

基于Docker安装Elasticsearch【保姆级教程、内含图解】_elasticsearch docker 安装_Acloasia的博客-CSDN博客


五、索引库操作

思维导图

1.mapping属性

mapping是对索引库中文档的约束常见的mapping属性包括

  • type字段数据类型常见的简单类型有

    • 字符串text可分词的文本、keyword精确值例如品牌、国家、ip地址

    • 数值long、integer、short、byte、double、float、

    • 布尔boolean

    • 日期date

    • 对象object

  • index是否创建索引默认为true

  • analyzer使用哪种分词器、

    • ik_smart:最少切分粗粒度

    • ik_max_word:最细切分细粒度

    • 默认的是standard分词器

    • 有两种分词模式

  • properties该字段的子字段

举例



2. 创建索引

       倒排索引结构虽然不复杂但是一旦数据结构改变比如改变了分词器就需要重新创建倒排索引。

       注意  因此索引库一旦创建无法修改mapping#xff01;#xff01;#xff01;

2.1 基本语法

注意索引库不可使用大写的英文

PUT /索引库名

2.2 使用格式

PUT /索引库名称
{
  "mappings": {
     "properties": {
        "字段名":{
          "type": "text",
          "analyzer": "ik_smart"
        },
        "字段名2":{
          "type": "keyword",
          "index": "false"
        },
        "字段名3":{
          "properties": {
             "子字段": {
               "type": "keyword"
             }
           }
        },
     // ...略
    }
  } 
}

2.3 使用实例

PUT /myesdemo
{
  "mappings": {
    "properties":{
      "age":{
        "type":"integer",
        "index":true
      },
      "weight":{
        "type":"boolean"
      },
      "isMarried":{
        "type":"boolean"
      },
      "info":{
        "type":"text",
        "analyzer":"ik_smart"
      },
      "eamil":{
        "type":"keyword",
        "index":false
      },
      "score":{
        "type":"float"
      },
      "name":{
        "properties":{
          "firstName":{
            "type":"keyword"
          },
          "lastName":{
            "type":"keyword"
          }
        }
      }
    }
  }
}



3. 查询索引

3.1 基本语法

  • 请求方式    GET

  • 请求路径/    索引库名

  • 请求参数无

3.2 使用格式

GET /索引库名

3.3 使用实例

GET /myesdemo

输出

{
  "myesdemo": {
    "aliases": {},
    "mappings": {
      "properties": {
        "age": {
          "type": "integer"
        },
        "eamil": {
          "type": "keyword",
          "index": false
        },
        "info": {
          "type": "text",
          "analyzer": "ik_smart"
        },
        "isMarried": {
          "type": "boolean"
        },
        "name": {
          "properties": {
            "firstName": {
              "type": "keyword"
            },
            "lastName": {
              "type": "keyword"
            }
          }
        },
        "score": {
          "type": "float"
        },
        "weight": {
          "type": "boolean"
        }
      }
    },
    "settings": {
      "index": {
        "routing": {
          "allocation": {
            "include": {
              "_tier_preference": "data_content"
            }
          }
        },
        "number_of_shards": "1",
        "provided_name": "myesdemo",
        "creation_date": "1685289278555",
        "number_of_replicas": "1",
        "uuid": "rlCb-2bpQuKUdnwJCTH5fQ",
        "version": {
          "created": "8060099"
        }
      }
    }
  }
}



4. 添加新的字段到mapping

前言有提到索引库一旦创建无法修改mapping

       但可以在已经创建的索引库进行添加新的字段。

4.1 基本语法

  • 请求方式    PUT

  • 请求路径/    索引库名    /_mapping

  • 请求参数无

4.2 使用格式

PUT /myesdemo/_mapping
{
  "properties":{
    "全新字段名":{
      "type":"keyword",
      "index":false
       // .... 略
    }
  }
}

4.3 使用实例

PUT /myesdemo/_mapping
{
  "properties":{
    "gender":{
      "type":"keyword",
      "index":false
    }
  }
}



5. 删除索引库

5.1 基本语法

  • 请求方式    DELETE

  • 请求路径/    索引库名

  • 请求参数无

5.2 使用格式

DELETE /索引库名

5.3 使用实例

DELETE /myesdemo



六、文档操作

思维导图


1. 添加文档

1.1 基本语法

         没有指定文档的id在 ES 中会自动给我们生成一个随机的文档 id 值。

  • 请求方式POST

  • 请求路径/索引库名/_doc/文档id

  • 请求参数无

1.2 使用格式

POST /索引库名/_doc/文档id
{
    "字段1": "值1",
    "字段2": "值2",
    "字段3": {
        "子属性1": "值3",
        "子属性2": "值4"
    },
    // ...
}

1.3 使用实例

#创建一个索引库
PUT /mydemo
{
  "mappings": {
    "properties":{
      "age":{
        "type":"integer",
        "index":true
      },
      "eamil":{
        "type":"keyword",
        "index":false
      },
      "id":{
        "type":"integer"
      },
      "score":{
        "type":"float"
      },
      "name":{
        "type":"text",
        "analyzer": "ik_smart"
        }
    }
  }
}
#向mydemo索引库新镇文档
POST /mydemo/_doc/1
{
  "age":18,
  "name":"李华华",
  "email":"XXX@xxx.com",
  "id":"1",
  "score":"99"
}

2. 查询文档

1.1 基本语法

  • 请求方式    GET

  • 请求路径/{    索引库名    }/_doc/{id}

  • 请求参数文档ID

1.2 使用格式

GET /{索引库名称}/_doc/{id}

1.3 使用实例


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

3. 删除文档

1.1 基本语法

  • 请求方式    DELETE

  • 请求路径/{    索引库名    }/_doc/{id}

  • 请求参数文档ID

1.2 使用格式

DELETE /{索引库名}/_doc/id值

1.3 使用实例

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

4.修改文档

4.1 全量修改

4.1.1 全量修改是什么

删除旧文档添加新文档

4.1.2 基本语法

  • 请求方式    PUT

  • 请求路径/{    索引库名    }/_doc/{id}

  • 请求参数文档ID

4.1.3 使用格式

PUT /索引库名/_doc/文档id
{
    "字段1": "值1",
    "字段2": "值2",
    // ... 略
}

4.1.4 使用实例

#全量修改删除旧文档添加新文档
PUT /mydemo/_doc/1
{
  "age":19,
  "name":"张三",
  "email":"XXX@xxx.com",
  "id":"2",
  "score":"100"
}


4.2 增量修改

4.2.1 增量修改是什么

只修改指定id匹配的文档中的指定字段值

4.2.2 基本语法

  • 请求方式POST

  • 请求路径/{    索引库名    }/_pudate/{id}

  • 请求参数文档ID

4.2.3 使用格式

POST /{索引库名}/_update/文档id
{
    "doc": {
         "字段名": "新的值",
    }
}

4.2.4 使用实例

#增量修改只修改指定id匹配的文档中的指定字段值
POST /mydemo/_update/1
{
  "doc":{
    "name":"李四"
  }
}



七、 高级查询

思维导图

       ES 提供了基于 JSON DSLDomain Specific Language来定义查询。

1. 查询的基本语法

GET /索引名称/_search
{
    "query": {
    "查询类型": {
        "查询条件": "条件值"
        }
    }
}

2. 查询所有

1. 基本语法

  • 请求方式GET

  • 请求路径/{    索引库名    }/_search

  • 请求参数无

2. 使用格式

GET /索引名称/_search
{
    "query": {
    "match_all": {}
    }
}

3. 使用实例

#查询所有
GET /mydemo/_search
{
  "query":{
    "match_all":{}
  }
}

3. 全文检索

全文检索查询的基本流程如下

  1. 对用户搜索的内容做分词得到词条

  2. 根据词条去倒排索引库中匹配得到文档id

  3. 根据文档id找到文档返回给用户

比较常用的场景包括

  • 商城的输入框搜索

  • 百度输入框搜索

1. 基本语法

  • match单字段查询

  • multi_match多字段查询任意一个字段符合条件就算符合查询条件

2. 使用格式

match

GET /索引名称/_search
{
  "query":{
    "match": {
      "FIELD": "TEXT"
    }
  }
}

multi_match

在 multi_match 的参数中query 表示要查询的字段值而 fields 表示在那些字段中查询。

GET /索引名称/_search
{
  "query":{
    "multi_match": {
      "query":"查询值",
      "fields":["查询条件1","查询条件2",...]
    }
  }
}

3. 使用实例

#全文检索
GET /mydemo/_search
{
  "query":{
    "match": {
      "age": "19"
    }
  }
}
GET /mydemo/_search
{
  "query":{
    "multi_match": {
      "query":"张飞",
      "fields":["name","email"]
    }
  }
}

4. 精准查询

       精确查询一般是查找keyword  、数值、日期、  boolean  等类型字段。所以  不会  对搜索条件分词。

1. 基本语法

  • term根据词条精确值查询

  • range根据值的范围查询

2. 使用格式

term查询

#term查询
GET /索引名称/_search
{
  "query":{
    "term": {
      "FIELD": {
        "value": "VALUE"
      }
    }
  }
}

range查询

##range查询
#这里的gte代表大于等于gt则代表大于
#lte代表小于等于lt则代表小于
GET /索引名称/_search
{
  "query":{
    "range": {
      "FIELD": {
        "gte": "VALUE",
        "lte": "VALUE"
      }
    }
  }
}

3. 使用实例

###精确查询
##term查询
GET /mydemo/_search
{
  "query":{
    "term": {
      "age": {
        "value": "19"
      }
    }
  }
}
##range查询
#这里的gte代表大于等于gt则代表大于
#lte代表小于等于lt则代表小于
GET /mydemo/_search
{
  "query":{
    "range": {
      "age": {
        "gte": "18", 
        "lte": "19" 
        }
      }
    }
  }
}

5. 过滤查询

       布尔查询是一个或多个查询子句的组合每一个子句就是一个  子查询

1. 基本语法

  • must    必须匹配每个子查询类似            

  • should选择性匹配子查询类似            

  • must_not必须不匹配    不参与算分    类似            

  • filter必须匹配    不参与算分

2. 使用格式

#过滤查询
GET /索引名称/_search
{
  "query":{
    "bool": {
      "must": [
        {"term": {
          "FIELD": {
            "value": "VALUE"
          }
        }}
      ],
      "should": [
        {"term": {
          "FIELD": {
            "value": "VALUE"
          }
        }}
      ],
      "must_not": [
        {"term": {
          "FIELD": {
            "value": "VALUE"
          }
        }}
      ],
      "filter": [
        {"term": {
          "FIELD": "VALUE"
        }}
      ]
    }
  }
}

3. 使用实例

#过滤查询
GET /mydemo/_search
{
  "query": {
    "bool": {
      "must": [
        {"term": {
          "age": {
            "value": "19"
          }
        }}
      ],
      "should": [
        {"term": {
          "eamil": {
            "value": "重庆"
          }
        }}
      ]
    }
  }
}

6. 排序查询

ES  默认是根据相关度算分  _score  来排序但是也支持自定义方式对搜索  结果排序

1. 基本语法

  • 请求方式GET

  • 请求路径/{    索引库名    }/_search

  • 请求参数无

2. 使用格式

#排序查询 
#排序字段、排序方式
#ASC 升序排列
#DESC 降序排列
GET /索引名称/_search
{
  "query":{
    "match_all": {}
    },
    "sort": [
      {
        "FIELD": {
          "order": "排序方式"
        }
      }
    ]
  }
}

3. 使用实例

#排序查询
GET /mydemo/_search
{
  "query":{
    "match_all": {}
    },
    "sort": [
      {
        "age": {
          "order": "asc"
        }
      }
    ]
  }
}

7. 分页查询

         ES 默认情况下只返回top10的数据

       如果要查询更多数据就需要修改分页参数了。ES   中通过修改from     size   参数来控制要返回的分页结果  

         

           注意当查询分页深度较大时汇总数据过多对内存和CPU会产生非常大的压力因此 ES 会禁止 from+ size 超过10000 的请求。 面试高频点  

1. 基本语法

  • from    从第几个文档开始

  • size总共查询几个文档

2. 使用格式

GET /索引名称/_search
{
  "query": {
    "match_all": {}
  },
  "from": 0,
  "size": 20,
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ]
}

3. 使用实例

#分页查询
GET /mydemo/_search
{
  "query":{
    "match_all": {}
  },
  "from": 0,
  "size": 20, 
  "sort": [
    {
      "age": {
        "order": "desc"
      }
    }
  ]
}

8. 高亮查询

       注意  高亮查询只能针对字段类型为 Text 的  不能是别的类型。默认会自动加上  

 如果希望修改可以在字段中指定。

1. 基本语法

高亮显示的实现分为两步

  1. 给文档中的所有关键字都添加一个标签例如 标签

  2. 页面给 标签编写CSS样式

2. 使用格式

GET /索引名称/_search
{
  "query": {
    "match": {
      "FIELD": "TEXT"
    }
  },
  "highlight": {
    "fields": {
      "FIELD":{
        "pre_tags": "",
        "post_tags": ""
      }
    }
  }
}

3. 使用实例

#高亮查询
GET /mydemo/_search
{
  "query": {
    "match": {
      "name": "张飞"
    }
  },
  "highlight": {
    "fields": {
      "name":{
        
      }
    }
  }
}

9. 聚合查询

1. 使用格式

#聚合函数
GET /索引名称/_search
{
  "size":0,
  "aggs": {
    "NAME": {
      "AGG_TYPE": {}
    }
  }
}

2. 使用实例

GET /mydemo/_search
{
  "size": 0,
  "aggs": {
    "aggName": {
      "terms": {
        "field": "age",
        "size": 10
      }
    }
  }
}

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

微服务-Elasticsearch基础篇【内含思维导图】

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

微服务-Elasticsearch基础篇【内含思维导图】

一、Elasticsearch入门1. Elasticsearch介绍【摘自百度百科】    Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性能使数据在生产环境变得更有价值。
微服务-Elasticsearch基础篇【内含思维导图】
2024-04-02

编程热搜

  • Mysql分表查询海量数据和解决方案
    众所周知数据库的管理往往离不开各种的数据优化,而要想进行优化通常我们都是通过参数来完成优化的。那么到底这些参数有哪些呢?为此在本篇文章中编程学习网笔者就为大家简单介绍MySQL,以供大家参考参考,希望能帮助到大家。以上就是关于大数据的知识点了。喜欢的可以分享给你的朋友,也可以点赞噢~更多内容,就在编程学习网!
    Mysql分表查询海量数据和解决方案
  • 大数据的妙用及17年趋势
    2017年,支持大量结构化和非结构化数据的系统将继续增长。市场需要数据平台来帮助数据管理人员管理和保护大数据,同时允许最终用户进行数据分析。这些系统将逐步成熟,在企业内部的IT系统中更好地运行。所以,我们更要了解大数据!互联网普及使得网民的行为更加多元化,通过互联网产生的数据发展更加迅猛,更具代表性。互联网世界中的商品信息、社交媒体中的图片、文本信息以及视频网站的视频信息,互联网世界中的人与人交互信息、位置信息等,都已经成为大数据的最重要也是增长最快的来源。大家都了解到了吗!更多内容就在编程学习网哟
    大数据的妙用及17年趋势
  • 5G大数据时代空降来袭
    欢迎各位阅读本篇文章,本文主要讲了5G大数据时代。如今 5G 概念已不再陌生,按照行业认同的说法:2017年至2018年 5G 将在国内开始有序测试,2019年进行预商用。工信部之前已表示,中国将在2020年启动 5G 商用。编程学习网教育平台提醒各位:本篇文章纯干货~因此大家一定要认真阅读本篇文章哦!
    5G大数据时代空降来袭
  • es详解-原理-从图解构筑对es原理的初步认知
    在学习ElasticSearch原理时,我推荐你先通过官方博客中的一篇图解文章(虽然是基于2.x版本)来构筑对ES的初步认知(这种认识是体系上的快速认知)。ES详解 - 原理:从图解构筑对ES原理的初步认知前言图解ElasticSearch图解LuceneSegmentInverted IndexStored Fiel
    es详解-原理-从图解构筑对es原理的初步认知
  • elasticsearch-wrapperquery
    在工作中遇到ElasticSearch版本升级时出现Java High Level接口变更导致的兼容性问题: 之前使用的是2.4.x,考虑性能和功能的增强,需要更换为6.4.x; 2.4.x中我们使用DSL语句直接查询(数据的不确定性和方便动态建立查询规则等因素),而新的ES Java 高阶API中去掉了相关接口的支持
    elasticsearch-wrapperquery
  • 学习大数据营销思维(下)
    编程学习网: 其实,通过上面的介绍,我们知道苹果通过各类产品与服务销售相互促进以理及薄利多销的方式来盈利第二种战略联盟类型是合作方的共同赢利。苹果公司打造了一个参与方共同受益的业务系统。
    学习大数据营销思维(下)
  • 纯干货:HLS 协议详解及优化技术全面解析
    编程学习网:HLS (HTTP Live Streaming), 是由 Apple 公司实现的基于 HTTP 的媒体流传输协议。他跟 DASH 协议的原理非常类似,通过将整条流切割成一个小的可以通过 HTTP 下载的媒体文件,然后提供一个配套的媒体列表文件给客户端,让客户端顺序地拉取这些媒体文件播放, 来实现看上去是在播放一条流的效果。HLS 目前广泛地应用于点播和直播领域。
    纯干货:HLS 协议详解及优化技术全面解析
  • 关于Python 代码全面分析
    欢迎各位阅读本篇,Python(KK 英语发音:/ˈpaɪθən/)是一种面向对象、直译式计算机程序设计语言。本篇文章讲述了关于Python 代码全面分析。
    关于Python 代码全面分析
  • es详解-原理-es原理之索引文档流程详解
    ElasticSearch中最重要原理是文档的索引和文档的读取,本文带你理解ES文档的索引过程。ES详解 - 原理:ES原理之索引文档流程详解文档索引步骤顺序单个文档多个文档文档索引过程详解整体的索引流程分步骤看数据持久化过程深入ElasticSearch索引文档的实现机制写操作的关键点Lucene的写Elastics
    es详解-原理-es原理之索引文档流程详解
  • 五大“网管”必备的网络数据分析工具
    是不是在为如何分析统计网络数据和流量烦恼呢?想不想监控、运维、排障轻松一些?下面给大家提供一些免费网络分析工具,以帮助大家更好的掌控自己的网络!编程学习网教育
    五大“网管”必备的网络数据分析工具

目录