elasticsearch基本使用--《elasticsearch核心技术与实战》笔记
Posted jazon@
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了elasticsearch基本使用--《elasticsearch核心技术与实战》笔记相关的知识,希望对你有一定的参考价值。
CAT查看elasticsearch索引的情况
- 查看索引信息
GET /_cat/indices/kibana_sample_data_flights?v&s=index
health | status | index | uuid | pri(主分片) | rep(副本数) | docs.count(文档总数) | docs.deleted | store.size(主分片的大小) | pri.store.size |
---|---|---|---|---|---|---|---|---|---|
green | open | kibana_sample_data_flights | Q6oQk43eSiW_hrP8rrCzpQ | 1 | 0 | 13059 | 0 | 6.2mb | 6.2mb |
- 查看节点
get _cat/nodes?v
- 查看索引信息
GET indexName
节点概念
- master-eligble和master
master-eligible node和 master node,每个节点启动后,默认就是一个Master eligible节点,可以设置node.master:false禁止。master-eligible节点可以参与选主流程,成为Master节点,当一个节点启动时候,它会将自己选举成Master节点。每个节点上都保存了集群的状态,只有Master节点才能修改集群的状态信息。集群状态维护了一个集群的必要信息,所有节点的信息,所有的索引和其相关的Mapping与Setting信息,分片路由信息。任意节点都能修改信息会导致数据的不一致。
- DataNode和Coordinating Node
DataNode负责保存分片数据,CoordinatingNode负责接受Client的请求,将请求分发到合适的节点,最终将结果汇集到一起,每个节点都起到了CoordinatingNode的作用。
文档CRUD
# create document,自动生成Id
POST users/_doc
{
"user" : "Mike",
"post_date" : "2019-04-15T14:12:12",
"message" : "trying out Kibana"
}
#create document. 指定 ID 如果已经存在,就报错
PUT users/_create/1
{
"user" : "Jack",
"post_date" : "2019-05-15T14:12:12",
"message" : "trying out Elasticsearch"
}
# delete document
DELETE users/_doc/1
# update document, 整篇文档被删除又重新新增
PUT users/_doc/1
{
"user" : "Mike"
}
#在原文档上增加字段
POST users/_update/1/
{
"doc":{
"post_date" : "2019-05-15T14:12:12",
"message" : "trying out Elasticsearch"
}
}
# 查文档
GET users/_doc/1
# bulk操作
POST _bulk
{ "index" : { "_index" : "test", "_id" : "1" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_id" : "2" } }
{ "create" : { "_index" : "test2", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_index" : "test"} }
{ "doc" : {"field2" : "value2"} }
# 批量查询
GET /_mget
{
"docs" : [
{
"_index" : "test",
"_id" : "1"
}
]
}
# 指定索引,批量查询
GET /test/_mget
{
"docs" : [
{
"_id" : "1"
},
{
"_id" : "2"
}
]
}
倒排索引入门
- Analyzer的组成
- 使用分词器分析text
POST _analyze
{
"analyzer": "standard",
"text": "Mastering Elasticsearch"
}
POST _analyze
{
"analyzer": "standard",
"text": "Elasticsearch Server"
}
POST _analyze
{
"analyzer": "standard",
"text": "Elasticsearch Essentials"
}
Search API概览
- 指定查询的索引
URI查询
使用"q",指定查询字符串,“query string syntax”,KV键值对。
RequestBody
# 查询titile即出现last又出现christmas的文档
POST movies/_search
{
"query": {
"match": {
"title": {
"query": "last christmas",
"operator": "and"
}
}
}
}
# 查询tile出现one love词语的文档,通过slop还可以指定两个次之间的距离
POST movies/_search
{
"query": {
"match_phrase": {
"title":{
"query": "one love"
}
}
}
}
Query String&Simple Query String
- query String
- Simple Query String Query
Dynamic Mapping和常见字段类型
- 字段的数据
- 能否更改Mapping的字段类型
显式Mapping设置与常见参数介绍
PUT movies
{
"mappings": {
// define your mappings here
}
}
- 设置null_value,应用于需要对Null值实现搜索
多字段特性及配置自定义Analyzer
- 多字段类型,用于精确匹配及使用不同的analyzer
- exact Values VS Full Text
- Elasticsearch为每一个字段创建一个倒排索引,Exact Value在索引时,不需要做特殊的分词处理。
Index Template和Dynamic Template
- Index Template帮助设定Mapping和Settings,并按照一定的规则,自动匹配到新创建的索引上。
- dynamic Template设置elasticasearch自动识别字段类型的依据
Elasticsearch聚合分析
聚合的分类
- Bucket Aggregation,一些满足特定条件的文档的集合
- Metric Aggregation,一些数学运算,可以对文档字段进行统计分析
- Pipeline Aggreation,对其他的聚合结果进行二次聚合
- Martrix Aggration,支持多个字段的操作并提供一个结果矩阵
GET kibana_sample_data_flights/_search
{
"size": 0,
"aggs":{
"flight_dest":{
"terms":{
"field":"DestCountry" // Bucket聚合
},
"aggs":{
"stats_price":{ //嵌套 Metric聚合
"stats":{
"field":"AvgTicketPrice"
}
},
"wather":{
"terms": { // Bucket嵌套Bucket
"field": "DestWeather",
"size": 5
}
}
}
}
}
}
// 结果集
{"aggregations" : {
"flight_dest" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 745,
"buckets" : [
{
"key" : "IT",
"doc_count" : 539,
"wather" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 107,
"buckets" : [
{
"key" : "Sunny",
"doc_count" : 105
},
{
"key" : "Cloudy",
"doc_count" : 99
},
{
"key" : "Rain",
"doc_count" : 97
},
{
"key" : "Clear",
"doc_count" : 85
},
{
"key" : "Heavy Fog",
"doc_count" : 46
}
]
},
"stats_price" : {
"count" : 539,
"min" : 103.80162048339844,
"max" : 1189.5384521484375,
"avg" : 566.2765519349164,
"sum" : 305223.0614929199
}
}
]
}
}
}
以上是关于elasticsearch基本使用--《elasticsearch核心技术与实战》笔记的主要内容,如果未能解决你的问题,请参考以下文章