Elasticsearch入门笔记

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入门笔记)