ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Elasticsearch学习Ⅰ

2020-09-27 07:31:49  阅读:179  来源: 互联网

标签:GET doc 学习 索引 Elasticsearch match 文档 es


Lucene

是Apache软件基金会4 jakarta项目的子项目。它是一个开源的全文检索引擎工具包。但它并不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)

相当于一个库, 还有很多东西要自己写.

ElasticSearch

权威指南: https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html

es中文社区: https://elasticsearch.cn/

Elasticsearch 是一个基于Lucene 搜索引擎为核心构建的开源,分布式,RESTful搜索服务器。它是一个实时的分布式搜索分析引擎,它能让你以前所未有的速度和规模,去探索你的数据。 具体体现在全文检索、结构化搜索、分析以及这三个功能的组合。

准实时

es环境配置

  • 首先安装 Java jdk
    • JAVA_HOME
    • 配置环境变量path
  • 然后管理员身份运行bin目录下的bat文件安装es
  • 同上原理安装kibana
    • kibana 一个为es提供数据分析的web接口. 可使用它对日志进行高效的搜索, 可视化, 分析等操作(类似于mysql的客户端)
  • 注意: kibana和es, ik分词版本保持一致

es数据组织

对比关系型数据库(不完全正确,方便理解参考)
数据库	 ---	索引indices
表	  ----	类型types
行	 ----	文档documents
字段	----	字段fields
  • 逻辑设计
    • 文档: 索引和搜索数据的最小单位
    • 类型: 文档的逻辑容器(类似于关系型数据库中, 表格是行的容器)
    • 索引: 映射类型的容器, es中的索引是一个非常大的文档集合. 索引存储了映射类型的字段和其他设置, 然后将它们存储到了各个分片上
  • 物理设计
    • 节点
    • 创建一个索引, 默认产生5个主分片, 5个副分片 (对应的主副分片不会在同一台服务器上), 一个分片是一个Lucene索引 (21亿篇文档 / 2740亿个唯一词条)
    • 一个Lucene索引 == 一个包含倒排索引的文件目录
  • 倒排索引: 词条, 对勾, 匹配到的文档都返回, 但是按照匹配度排序
    • 在不全文搜索的情况下返回符合关键字的文档, 建议了解一下其算法
  • 参考博客: https://www.cnblogs.com/Neeo/articles/10571307.html

es基本操作

  • # 新增数据(JSON形式)
    # PUT 索引名/类型/文档id
    PUT a1/doc/1
    {
      "name":"大郎",
      "age":18
    }
    
    # 更新,version变化
    PUT a1/doc/1
    {
      "name":"武大郎",
      "age":16
    }
    
    # 查找
    GET a1/doc/1
    
    # 查找doc目录下所有,是个字典套列表套字典...
    GET a1/doc/_search
    
    # 删除
    # DELETE 索引名/类型/文档id
    DELETE a1/doc/3
    
    # 全部删除(删除a1索引)
    DELETE a1/
    
    # 修改部分数据
    # POST 索引名/类型/文档id/_update
    POST s22/doc/1/_update
    {
    	"doc": {
    		"age": 27
    	}
    }
    # PUT命令,在做修改操作时,如果未指定其他的属性,则按照指定的属性进行修改操作。所以修改不要用PUT
    
    # 查询所有的索引
    GET _cat/indices?v
    

es两种查询方式

  • 参考博客: https://www.cnblogs.com/Neeo/articles/10576413.html

  • #HEAD确认索引是否存在(200/404)
    HEAD s22
    
    查询年龄为18的数据
    #简单搜索(查询字符串搜索)
    GET s22/doc/_search?q=age:18
    
    #DSL查询(重点)
    GET s22/doc/_search
    {
        "query":{
            "match":{
                "age":"18"
            }
        }
    }
    

match系列

# match 先分析关键字, 分词, 然后搜索
GET s22/doc/_search
{
    "query":{
        "match":{
            "tag":"白 可爱"	#分词拆成"白" "可" "爱"
        }
    }
}

# match_phrase 短语查询
GET s22/doc/_search
{
    "query":{
        "match_phrase":{
            "tag":"可爱"	  #不拆分词
        }
    }
}

GET t1/doc/_search
{
    "query":{
        "title":{
            "query": "中国世界",
            "slop": 1		# 词之间的间隔
        }
    }
}


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

标签:GET,doc,学习,索引,Elasticsearch,match,文档,es
来源: https://www.cnblogs.com/straightup/p/13737578.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有