美文网首页
基础学习

基础学习

作者: 意大利大炮 | 来源:发表于2022-10-30 15:55 被阅读0次

安装head

  • 解压
  • 进入解压目录,执行 npm install
  • 执行npm run start
  • es配置可跨域,elasticsearch.yml配置文件末尾加上两行:
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    

分布式安装

配置master

  • 修改elasticsearch.yml配置文件
  • 末尾加上:
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    
    cluster.name: wali
    node.name: master
    node.master: true
    
    network.host: 127.0.0.1
    

配置node

- 末尾加上:
```
    http.cors.enabled: true
    http.cors.allow-origin: "*"

    cluster.name: wali
    node.name: slave1

    network.host: 127.0.0.1
    http.port: 8200

    discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
```
- 若遇到集群id不匹配从而不能加入集群的问题时,需要删除从节点的/nodes目录数据

集群与节点

  • 一个集群由一个以上节点组成
  • 每个集群都有一个唯一的名称,默认为elasticsearch
  • 一个节点只能属于一个集群
  • 节点通过集群名字加入集群
  • 每个节点都有自己的名字
  • 节点能存储数据,参与集群索引数据以及搜索数据

索引

  • 含有相同属性的文档集合
  • 通过名字区别
  • 可以增删查改
  • 相当于sql的datebase

类型

  • 一个索引可以定义一个或多个类型,有相同字段的文档,定义为一个类型
  • 相当于table

文档

  • 可以被索引的基本数据单位
  • 相当于一行data

分片

  • 每个索引都有多个分片,每个分片都是一个Lucene索引
  • 创建索引时确定分片数量。默认五个
  • 分担大数据时的搜索压力

备份

  • copy一份分片就完成了分片的备份
  • 提高可用性,可执行搜索操作分担压力
  • 默认一个备份。可以后期修改备份数量

索引的创建

api的基本格式

http://ip:port/索引/类型/文档id

常用HTTP动词

GET/PUT/POST/DELETE

结构化

可创建结构化与非结构化索引

插入数据

  • 指定文档id插入/自动产生文档id插入

修改数据

两种修改方式

  • URL: /{index}/{type}/{docId}/_update

  • 直接修改

需要修改的属性写到doc中
{
    "doc" : {
    }
}
  • 脚本修改
  1. 修改age自增10
    1. lang指定脚本语言
    2. inline中写脚本内容

    {
        "script": {
            "lang": "painless",
            "inline:" "ctx._cource.age += 10"
        }
    }
  1. 修改age为100
    1. lang指定脚本语言
    2. inline中写脚本内容,引入params中的内容
    3. params为自定义的参数,可由脚本调用
{
    "script": {
        "lang": "painless",
        "inline:" "ctx._cource.age = params.age",
        "params": {
            "age": 100
        }
    }
}

删除

删除文档

  • DELETE请求 /{index}/{type}/{docId}

删除索引

  • DELETE请求 /{index}

查询

  • 简单查询、条件查询、聚合查询

简单查询

  • GET方法 /{index}/{type}/{docId}

条件查询

  • POST方法 /{index}/_search
    1. 查询所有数据
    {
        "query": {
            "match_all":{}
        },
        "from": 1,  // 从哪里开始
        "size": 10  // 条数
    }
    
    1. 关键词查询
      • 查询标题含有elacticSearch书籍,并按照出版日期倒叙
    {
        "query": {
            "match":{
                "title": "elacticSearch"
            }
        },
        "sort": [
            {
                "publish_data": {
                    "order": "desc"
                }
            }
        ]
    }
    

聚合查询

  • POST方法 /{index}/_search
    1. 按照书籍字数信息进行聚合
    {
        "aggs": {
            "group_by_word_count": { // 自定义
                "terms": {  // 关键词
                    "field": "word_count"
                }
            }
        }
    }
    
    1. 按照书籍字数信息与出版时间进行聚合
    {
        "aggs": {
            "group_by_word_count": { // 自定义
                "terms": {  // 关键词
                    "field": "word_count"
                }
            },
            "group_by_publish_date": { // 自定义
                "terms": {  // 关键词
                    "field": "publish_date"
                }
            }
        }
    }
    
    1. 对书籍字数进行统计计算
    {
        "aggs": {
            "grades_word_count": { // 自定义
                "stats": {  // 关键词,统计计算
                    "field": "word_count"
                }
            }
        }
    }
    
    1. 计算书籍字数的最小值
    {
        "aggs": {
            "grades_word_count": { // 自定义
                "min": {  // 关键词,最小值
                    "field": "word_count"
                }
            }
        }
    }
    

查询方式

  • 子条件查询:特定字段查询所指特定值
  • 符合条件查询:以一定的逻辑组合子条件查询

子条件查询

  • query Context、filter Context
Query Context:除了判断文档是否满足查询条件外,还会计算一个_score来表示匹配的成都
  1. 全文本查询:针对文本类型数据
  2. 字段级别查询:针对结构化数据,如数字日期
  • 全文本查询
    • POST方法, /{index}/_search
    1. 模糊匹配:模糊查询作者为瓦力的数据
    {
        "query": {
            "match": { // 关键字, 模糊匹配
                "author": "瓦力" 
            }
        }
    }
    
    1. 习语匹配:精确查找匹配 title包含ElacticSearch的数据
    {
        "query": {
            "match_phrase": { // 关键字, 习语匹配
                "title": "ElacticSearch" 
            }
        }
    }
    
    1. 多个字段的模糊匹配查询: 搜索作者和名称字段中包含瓦力的数据
    {
        "query": {
            "multi_match": { // 关键字, 多个字段匹配
                "query": "瓦力",
                "fields": ["author", "title"]
            }
        }
    }
    
    1. 语法查询: 模糊匹配ElasticSearch与大法(都要匹配到)
    {
        "query": {
            "query_string": { // 关键字, 语法查询
                "query": "ElasticSearch AND 大法"
            }
        }
    }
    
    1. 语法查询: 模糊匹配ElasticSearch或瓦力,限制匹配字段为title与author
    {
        "query": {
            "query_string": { // 关键字, 语法查询
                "query": "ElasticSearch OR 瓦力",
                "fields:": ["author", "title"]
            }
        }
    }
    
  • 字段级别查询
    1. 查询字数为1000的书籍
    {
        "query": {
            "term": { // 关键字,具体项
                "word_count": 1000
            }
        }
    }
    
    1. 范围查询:查询字数介于1000-2000之间的数据
    {
        "query": {
            "range": { // 关键字,范围查询
                "word_count": {
                    "gte": 1000,    // 加e,表示 大于等于,去除e,表示大于
                    "lte": 2000
                }
            }
        }
    }
    
    1. 范围查询:查询出版日期在2017-1-1至今日之间的数据
    {
        "query": {
            "range": { // 关键字,范围查询
                "publish_date": {
                    "gt": "2017-01-01",
                    "lte": "now"  // now表示今天
                }
            }
        }
    }
    
filter Context
  • 查询过程中,只判断该文档是否满足条件,只有yes或no
  • elacticSearch会对filter的结果进行缓存
  • 效率比query高一些
    1. 查询书籍字数为1000的数据
    {
        "query": {
            "bool": {
                "filter": {
                    "term": {
                        "word_count": 1000
                    }
                }
            }
        }
    }
    

复合条件查询

  1. 固定分数查询
{
    "query": {
        "constant_score": {
            "filter": {
                "match": {
                    "title": "ElaticSearch"
                }
            }
        }
    }
}
  1. bool查询,满足一个
{
    "query": {
        "bool": {
            "should": {  // 关键字,或
                "match": {
                    "author": "瓦力"
                },
                "match": {
                    "title": "ElasticSearch"
                }
            }
        }
    }
}
  1. bool查询,必须满足所有条件;查询作者为瓦力且title为ElasticSearch且字数为1000的书
{
    "query": {
        "bool": {
            "must": {  // 关键字,与
                "match": {
                    "author": "瓦力"
                },
                "match": {
                    "title": "ElasticSearch"
                }
            },
            "filter": {
                "term": {
                    "word_count": 1000
                }
            }
        }
    }
}
  1. bool查询,不能满足; 查询作者不是瓦力的书
{
    "query": {
        "bool": {
            "must_not": {  // 关键字,与
                "term": {
                    "author": "瓦力"
                }
            }
        }
    }
}

相关文章

  • react学习路线图

    基础 HTML学习 HTML 基础学习 HTML 基础CSS学习 CSS 基础在上一步练习的基础上为页面添加样式使...

  • RxJava——基础学习(三),简单实践

    RxJava——基础学习(一)RxJava——基础学习(二)前两篇基础学习,了解了RxJava最基础的部分知识。这...

  • 花书第五章笔记

    [TOC] 第五章 机器学习基础 机器学习基础 掌握机器学习的基本知识和基础原理 机器学习基础[p87-p142]...

  • RobotFramework接口测试分享(一)

    基础条件 1、Python的基础:学习Python的基础教程(可参考各大学习网站) 基础部分需要学习,后续接入实际...

  • 谈话档案

    问题类 时间 姓名 学习基础 表现基础 近期问题 问题分析 解决措施 成长类 时间 姓名 学习基础 表现基础 近期...

  • Java 初中级程序员如何快速成长???

    Java 研发技术学习路线 一、Java 基础阶段 基础阶段的学习说白了就是 Java SE 的学习,这是基础的阶...

  • 浅谈语音识别基础

    承接前面的《浅谈机器学习基础》、《浅谈深度学习基础》和《浅谈自然语言处理基础》,主要参考了《解析深度学习:语音识别...

  • 零基础学习UI设计电脑需要什么配置

    零基础学习UI设计电脑需要什么配置零基础学习UI设计电脑需要什么配置零基础学习UI设计电脑需要什么配置零基础学习U...

  • 深度学习基础教程

    深度学习基础教程 [tag]深度学习,机器学习,数据分析,挖掘,算法, [content]深度学习的入门基础。 [...

  • 线上思维导图课程总结

    一、学习内容 学习的内容:基础篇、学习篇、运用篇。包括基础篇的:思维导图开启全新思维、开通基础篇学习了思维导图...

网友评论

      本文标题:基础学习

      本文链接:https://www.haomeiwen.com/subject/mecjultx.html