美文网首页
Elasticsearch入门笔记

Elasticsearch入门笔记

作者: 6d898101c4c9 | 来源:发表于2019-04-22 01:57 被阅读0次

    Elasticsearch 全文搜索,结构化搜索、数据分析、复杂的语言处理、地理位置和对象间关联关系等。
    如何给数据建模来充分利用 Elasticsearch 的水平伸缩性,
    以及在生产环境中如何配置和监视集群。

    信息检索的概念、分布式系统原理、Query DSL

    集群内的原理 、 分布式文档存储 、 执行分布式检索 和 分片内部原理

    元数据,用于标注文档的相关信息

    _index:文档所在索引的名字
    _type:
    _id:文档唯一id
    _uid:
    _source:原始json数据
    _all:已禁用

    每个index都有个mapping定义,定义字段名和类型

    一。基本原理

    1.倒排索引

    根据文档内容找到对应的id,会对内容进行分词

    基本执行步骤:1.通过倒排索引获得关键词对应的文档id ,1,3
    2.通过正排索引查询1和3的完整内容
    3.返回结果

    倒排索引的组成:
    1.单词词典(Term Dictionary)
    一般是用 B+Tree

                  记录所有文档的单词
    
                  记录单词到倒排列表的关联信息
    
                2.倒排列表(Posting List)
                  
                  包含:文档id
                单词频率(TF,Term Frequency)
            位置(分词的位置)
            偏移(记录单词的开始和结束位置)
    
    2.正排索引

    id到文档内容

    3.分词(将文本转换为一系列的单词)

    Character Filters(处理原始文本)

    Tokenizer(切分单词)

    Token Filters(转小写,删除无意义的,新增近义词,同义词)

    4.Mapping
    定义index下的字段名
    定义字段类型
    定义倒排索引相关配置,如是否索引等
    
    5.数据类型
    字符串      text,keyword
    数值型      long,interger,short,byte,double,
                    float,half_float,scaled_float
    日期类型    date
    布尔类型    boolean
    二进制类型  binary
    范围类型
        复杂类型    array
                    object 
                    nested object
    
    6.Search API
      URI Search   (在URL里操作)
    如: GET /my_index/_search?q=name:hyh
      Pequest Body Search (用json格式查询)
    

    二。语法

    1.索引操作

    创建:PUT /test_index
    查看:GET _cat/indices
    删除:DELETE /test_index

    2.文档操作

    创建:(指定id)
    PUT /test_index/doc/1
    {
    "username":"aaa",
    "age":1
    }
    文档会有一个版本号,锁的机制
    创建文档时会自动创建index和type

    创建:(不指定id)
    POST /test_index/doc
    {
    "username":"aaa",
    "age":1
    }

    查询:
    GET /test_index/doc/1

    查询所有文档:
    GET /test_index/doc/_search
    {
    "query":{
    "term":{
    "_id":"1"
    }
    }
    }

    返回数据说明:
    took 耗时 ms
    hits:命中的文档
    total:文档数
    hits:文档数组,默认返回10条数据
    _score:相关性得分

    3.批量创建文档API

    endpoint为_bulk

    POST _bulk
    {"index":{"_index":"test_index","_type":"doc","_id":"3"}}
    {json}
    {"delete":{"_index":"test_index","_type":"doc","_id":"3"}}
    {"update":{"_index":"test_index","_type":"doc","_id":"3"}}
    {"doc":{json}}

    返回内容
    itms:每个操作的结果
    index的id如果不存在,则新建,如存在,则覆盖
    update的id必须存在

    4.批量查询文档API

    GET /_mget
    {"docs":[json]}

    PUT /megacorp/employee/1
    {
    "first_name" : "John",
    "last_name" : "Smith",
    "age" : 25,
    "about" : "I love to go rock climbing",
    "interests": [ "sports", "music" ]
    }

    5.Analyze API

    自带分词器
    POST _analyze
    {
    "analyze":"standard",
    "text":"hello world!"
    }
    自定义分词器
    POST _analyze
    {
    "tokenizer":"standard",
    "filter":["lowercase"], //过滤
    "text":"hello world!"
    }

    6.Mapping API
    查询mapping   
    GET /test_index/_mapping
    
        定义mapping
    

    PUT my_index
    {
    "mapping":{ //mapping
    "doc":{ //指定type
    "properties":{ //字段定义
    "title":{ //字段名称
    "type":"text" //字段类型
    }
    }
    }
    }
    }

      dynamic :  true      可以新增
        false      可以新增,但无法查询
        strict     不能写入
    
      copy to :将几个字段合到一起
    

    ,复制到另一个字段里,用来查询

      index :true  该字段可以搜索
              false 该字段不搜索
    
      index_options :倒排索引记录的内容
                        docs
            freqs
            positions
            offsets
    
      null_value:可以设置NULL 或者默认值

    相关文章

      网友评论

          本文标题:Elasticsearch入门笔记

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