乐趣区

关于elasticsearch:Elastic-Stack学习笔记02

ElasticSearch 外围详解

文档

元数据(metadata)

  • _index 索引
  • _type 文档类型
  • _id 惟一标识符(默认 32 位)
查问响应

丑化 pertty : 使得返回的 json 更易查看

GET {查问 url}?pretty

指定响应字段 : _source

GET /haoke/user/1005?_source=id,name

只返回指定字段 : _source?source=

GET /haoke/user/1005/_source?_source=id,name
判断文档是否存在

HEAD /{索引}/{类型}/{id}

批量操作
批量查问 _mget

POST /{索引}/{类型}/_mget

{"ids":["AXqP5R4PXV22eQAormWv","1111"]
}


found:false 示意查问后果不存在

批量增、删、改 _bulk

POST /{索引}/{类型}/_bulk

/* 插入 */
{"create":{"_index":"haoke","_type":"user","_id":2001}}
{"id":2001,"name":"name1","age": 20,"sex": "男"}
{"create":{"_index":"haoke","_type":"user","_id":2002}}
{"id":2002,"name":"name2","age": 20,"sex": "男"}
// 最初一行须要有回车

/* 删除 */
{"delete":{"_index":"haoke","_type":"user","_id":2001}}
{"delete":{"_index":"haoke","_type":"user","_id":2002}}
// 最初一行须要有回车
分页

size : 后果数,默认 10
from : 跳过开始的后果数,默认 0

GET /{索引}/{类型}/_search?size=10&from=0

ES 分页会在每个分片生成一次排序后果,最初集中起来汇总排序,因而分页太深或申请太多会影响性能

映射

text:须要被全文搜寻(分词)的字段,如内容,形容
keyword:结构化字段,如地址,状态,标签

创立映射

PUT /{索引}

{
    "settings":{
        "index":{
            "number_of_shards":"2",
            "number_of_replicas":"0"
        }
    },
    "mappings":{
        "person":{
            "properties":{
                "name":{"type":"text"},
                "age":{"type":"integer"},
                "mail":{"type":"keyword"},
                "hobby":{"type":"text"}
            }
        }
    }
}
查看映射

GET /{索引}/_mapping

搜寻测试

POST /test/person/_bulk

{"create":{"_index":"test","_type":"person","_id":1}}
{"id":1,"name":"听音乐","age": 20}
{"create":{"_index":"test","_type":"person","_id":2}}
{"id":2,"name":"玩音乐","age": 20}

POST /{索引}/{文档}/_search

{
    "query":{
        "match":{"name":"音乐"}
    }
}

结构化查问

term 查问:准确匹配值。如数字,日期,布尔值
POST /{索引}/{文档}/_search
{
    "query":{
        "term":{"age": 20}
    }
}
terms 查问:多条件匹配
POST /{索引}/{文档}/_search
{
    "query":{
        "terms":{"age": [20, 21]
        }
    }
}
range 查问:范畴匹配
POST /{索引}/{文档}/_search
{
    "query":{
        "range":{
            "age": {"gte" : 20}
        }
    }
}
exits 查问:文档是够蕴含某字段,相当于 SQL 的 IS NULL 条件
POST /{索引}/{文档}/_search
{
    "query":{
        "exists":{"field" : "hobby"}    
    }
}
match 查问:规范查问,全文本查问,准确查问
POST /{索引}/{文档}/_search
{
    "query":{
        "match":{"name" : "音乐"}    
    }
}
bool 查问:合并多个查问条件

must 多个条件齐全匹配,相当于and
must_not 多个条件相同匹配,相当于not
should 至多有一个条件匹配,相当于or

POST /{索引}/{文档}/_search
{
    "query":{
        "bool": {
            "must": {
                "term":{"age" : 20}
            },
            "must_not": {
                "term":{"name" : "听音乐"}
            },
            "should": [
                {
                    "term":{"name" : "name1"}
                },
                {
                    "term":{"name" : "name2"}
                }
            ]
        }
            
    }
}

过滤查问:filter

POST /{索引}/{文档}/_search
{
    "query":{
        "bool" : {
            "filter": {
                "term": {"age": 20}
            }    
        }
    }
}
查问和过滤的比照
  • 一条过滤语句会询问每个文档的字段值是否蕴含着特定值。
  • 查问语句会询问每个文档的字段值与特定值的匹配水平如何。
  • 一条查问语句会计算每个文档与查问语句的相关性,会给出一个相关性评分 _score,并且 依照相关性对匹 配到的文档进行排序。这种评分形式十分实用于一个没有齐全配置后果的全文本搜寻。
  • 一个简略的文档列表,疾速匹配运算并存入内存是非常不便的,每个文档仅须要 1 个字节。这些缓存的过滤后果集与后续申请的联合应用是十分高效的。
  • 查问语句不仅要查找相匹配的文档,还须要计算每个文档的相关性,所以一般来说查问语句要比 过滤语句更耗时,并且查问后果也不可缓存。

倡议:做准确匹配搜寻时,最好用过滤语句,因为过滤语句能够缓存数据。

退出移动版