ElasticSearch学习笔记

ElasticSearch笔记

  • 场景

    分布式全文检索,处理PB级的数据

  • 相关
    • Lucene
    • 简单restful API隐藏Lucene的复杂性
    • 对比Solr
  • 安装开箱即用,在配置config中修改了jvm的默认运行内存

  • 处理跨域问题:开启跨域支持,让所有用户都可以使用

    http.cors.enabled: true
    http.cors.allow-origin: “*”

  • ElasticSearch head:当做数据库展示工具使用

  • kibana可视化工具

  • ELK三大框架:Elasticsearch、Logstash、Kibana

  • 关系型数据库与es(面向文档)的对比
  • 索引 1个es的索引被分为多个分片(每个分片=Lucene索引)

    一索引(user)包含多个文档(1、2、3),文档即一条json数据记录

    行=文档 列=fields???

  • postman测试

    {

    “mappings”: {

    ​ “properties”: {

    ​ “id”: {

    ​ “type”: “long”,

    ​ “store”: true

    ​ },

    ​ “title”: {

    ​ “type”: “text”,

    ​ “store”: true,

    ​ “index”:true,

    ​ “analyzer”:“standard”

    ​ },

    ​ “content”: {

    ​ “type”: “text”,

    ​ “store”: true,

    ​ “index”:true,

    ​ “analyzer”:“standard”

    ​ }

    ​ }

    }

    }

  • 类型:文档的逻辑容器(如表是行的容器)

    创建新索引时,默认类型命名为_doc

  • 倒排索引 inverted index(知识查漏) :常被称为反向索引,是搜索引擎中非常重要的数据结构

    文档是有许多的单词组成的,其中每个单词也可以在同一个文档中重复出现很多次,当然,同一个单词也可以出现在不同的文档中。

    • 正排索引(forward index):

      从文档角度看其中的单词,表示每个文档(用文档ID标识)都含有哪些单词,以及每个单词出现了多少次(词频)及其出现位置(相对于文档首部的偏移量)。

    • 倒排索引(inverted index,或inverted files)

      从单词角度看文档,标识每个单词分别在那些文档中出现(文档ID),以及在各自的文档中每个单词分别出现了多少次(词频)及其出现位置(相对于该文档首部的偏移量)。

    简单记为:
    正排索引:文档 —> 单词
    倒排索引:单词 —> 文档

    来源:知乎GarfieldEr007https://www.zhihu.com/question/23202010/answer/80462209

    • 搜索时 去停用词+分词,再倒排索引
  • 文档CRUD
  1. 添加/更新数据:
    • 格式:PUT 索引/类型type(默认_doc)/document文档ID?

      如:

      PUT jianyu/one/1/

      {
      “name”: “chenjianyu”,
      “age”: 18
      }

    • 如果PUT为更新操作,可以观察数据版本号变化:

      “_version”: 2, (数据被改动的次数)

      “result”: “updated”,

    2、查询 GET

    GET jianyu/one/1/

    • 普通ID查询: http://localhost:9200/jianyu/one/1

    • 条件查询:http://localhost:9200/jianyu/**_search****?q=name😗*chenHAHA

    • 分词器对text类型有拆分的模糊查询效果,对keyword类型(不被分词器解析)只能整体查询

    • GET jianyu/**_search

      {
      “query”: {
      “match”: {
      “name”: “chenHAHA”
      }
      }
      }

    • 查询结果hist->java中的Map对象

    • 复杂查询:结果过滤、排序、分页、多条件查询、非(must_not)、filter数据过滤、高亮查询

    • 多条件查询按匹配度评分排列结果:

    3、更新数据
    • 1中的PUT

    • POST

      • 普通 的post和PUT一样,重写覆盖写入的数据完全代替原数据

      • 在POST请求后加/_update,则只会跟新写入的数据项

      • 示例:http://localhost:9200/jianyu/one/1/_update POST

        {

        “doc”: {

        ​ “name”: “chenHAHA”

        }

        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值