marvel管理工具
/_shutdown;关闭es。
es客户端:节点客户端、传输客户端。
9200,restful HTTP;9300,rpc tcp,更快。
es面向文档,使用json存储数据,
集群、节点、分片。
横向扩展、纵向扩展。
空集群
节点:一个es实例
集群:一个或多个协同工作的节点。
es主节点管理集群级别的变更(索引、节点),不参与文档级别的变更。
客户端可连接集群中任意节点;由连接节点转发请求,并收集整理返回数据。
集群健康
集群健康:red(不是所有主分片可用)、yellow(主分片都可用,从分片不是都可用)、green(主从分片都可用)
索引:存储关联数据的地方。实际上为指向一个或多个分片的逻辑命名空间。类似数据目录。
分片,最小级别的工作单元,存储索引的一部分。将索引切分为多个数据片存储在多个节点,并行以提高查询性能。副本,保证数据可用性。
每个分片都是一个Lucene实例;主分片负责读写,并发复制文档到从,从分片负责读。
集群扩容、缩容时,es自动迁移分片。节点恢复时,只复制故障期间变更的数据。
es是分布式文档数据库,存储序列化的json文档(document)。
文档元数据:_index、_type、_id
使用重试(幂等)、版本控制,处理更新冲突。
版本控制,_version;内部版本控制,自增;外部版本控制,_version设为传入值,不支持局部更新。
_mget、_bulk;可在url中指定默认index、type,在请求体中可覆盖。
PUT;增。PUT /index/type/ID
DELETE;删。DELETE /index/type/ID
POST;改。POST /index/type/
GET;查。GET /index/type/ID?q=EXPR,或/index/type/_search
HEAD;元数据。HEAD /index/type/ID
分片规则:hash(route)%分片数;route默认为_id,也可自行指定。
主分片数在创建后不可改变,否则之前的路由值会发生错误。
请求节点将写请求路由到对应主分片执行,而后复制文档到从分片;读请求,使用轮询方式进行负载均衡。
mget、bulk请求;请求节点先按分片构建数据请求,而后发到对应分片执行。
_search;搜索。
多个index、type时;逗号隔开。允许使用*匹配index、type。
/_all/lkk/_search;搜索全部索引的lkk文档。
from、size;指定偏移量、数量
简易搜索:/_search?q=EXPR
EXPR为name:value格式,空格隔开;前缀:+与,-非,无前缀为或。
EXPR必须转为url格式。
q=lkk;找到任意列包含lkk的文档。
mapping,映射,确定列类型。
analysis,分析,构建反向索引。
数据类型:string、number、boolean、date,null、数组、对象。
ES的数据大致可分为两种类型:确切值(完全匹配)、全文文本(匹配度)。
反向索引,由词查询文档。标准化:全小写,转换同根词同义词
analyzer,分析器;包括:字符过滤器(特殊字符处理)、分词器(断词)、表征过滤(标准化)。
内建分析器:
string类型核心参数:index(analyzed、not_analyzed、no)、analyzer(分词器)
/_analyze;测试分析器
字段可以添加,但不能删除。
数组;数组的值必须为同一类型,es使用第一个值的类型确定数组类型。
null;空字段。不被索引,如:""、null、[]、[null]
object;多层对象。内部对象索引时会扁平化,变为key:[vals]形式;扁平化过程中,会丢失对像中数组对象属性key之间的关联关系,需使用nested类型。
GET /_search BODY;可查询多个索引、类型,同字符串查询。也支持POST方式。
{};空查询,返回全部文档
from,size;分页参数
query;查询参数。空查询等同于:{ “query” : { “match_all”:{}}}
查询子句结构:
结构化过滤
filter,只匹配不评分,可使用缓存。通过字节集缓存数据。
term,terms;精确过滤,包含。
range;范围过滤;gt、lt、gte、lte
exists,missing;字段过滤
bool;合并多个过滤。must、shoud、must_not
结构化查询
query,查询并评分,不可使用缓存。
match_all;查询全部文档。默认。score为1.
match;全文文本时使用匹配度,确切值时精确匹配。
multi_match;搜索多个字段。
bool;类似bool过滤。must、should、must_not,合并多个查询。
查询与过滤的合并
search API中只能包含query语句,使用filtered保证filter、query语句。
{ query : { filtered : { filter,query}}}
验证查询
/_validate/query;验证查询语句是否合法
/_validate/query?explain;查询计划,类似sql explain
默认按相关性,降序排序。
sort;指定排序字段,多个字段时用数组。
包含多个值的字段排序,使用max、min、avg、sum等选出排序值。
不使用score排序时,不计算score。
"sort": [
{ "date": { "order": "desc","mode": "min" }},
{ "_score": { "order": "desc" }}
]
字符串排序,可构建内部not_analyze字段,用于排序。
相关性计算:检索词频率、反向文档频率、字段长度准则。
ES查询分两步:查询、取回 。
查询阶段;协调节点转发请求;分片返回文档id、排序字段;排序分片返回到有序优先队列中。
取回阶段;协调节点筛选结果,向分片请求数据;分片按需返回。
搜索选项:
扫描和滚屏;批量返回数据,不排序。滚屏标记文档,扫描获取并返回结果集。
倒排索引,词-文档id;不可变;
通过补充索引,处理更新问题。
近实时搜索:
持久化变更:
桶(文档集合,group by)、指标(文档集合的字段统计,sum、avg、count、min/max等)
聚合只对非文本类型。aggs内可有多个聚合,必须为key:body格式。
桶内套指标、桶,aggs;
不带桶时计算指标,对所有条目计算。
指标,指标计算:
桶,结果集分组;带key,count信息:
桶排序,order;内置排序(_count、_term、_key),度量排序(引用指标别名,多级使用>连接)
主要:全文查询,term查询,复合查询,连接查询
测试数据导入:https://blog.csdn.net/u012224510/article/details/86571305
命令:curl -H “Content-Type: application/x-ndjson” -XPOST “IP/INDEX/TYPE/_bulk?pretty” --data-binary @JSONPATH
jsonl类型,不带index、type
json对象,根属性:
filter,只匹配不评分,可使用缓存。通过字节集缓存数据。
term,terms;精确过滤,包含。
range;范围过滤;gt、lt、gte、lte
exists,missing;字段过滤
bool;合并多个过滤。must、shoud、must_not
query,查询并评分,不可使用缓存。
match_all;查询全部文档,默认;score为1。参数:boost
match_none;不匹配任何文档
match;全文文本时使用匹配度,确切值时精确匹配。
match_phase;短语查询,接近匹配。
match_phase_prefix;类似短语查询,短语查询+前缀匹配最后一个词。
common;偏好非常见词,对高频词、低频词有匹配次数要求。
query_string;查询字符串语法。
simple_query_string;简单字符串
term;值查询
terms;多值查询
terms_set;值集合查询,规定最少匹配数。
range;范围查询
exists;存在查询,字段非null
prefix;前缀查询。i love lk,匹配最后一词的前缀
wildcard;通配符查询,?单*多。防止以?*为首部。
regexp;正则查询
fuzzy;模糊查询
type;类型查询
ids;id查询,类似/index/type/_mget { “ids”:[]}
条件组合,分数计算
constant_score;常数查询,包装查询到filter子句,在过滤器上执行。
bool;组合查询,
dis_max;disjunction,最佳匹配查询。类似multi_match的best_field,most_field
function_score;自定义分数
boosting;权重查询
查询nested嵌套对象。
nested;嵌套查询返回父,查询nested类型字段。
has_child;子查询,返回父,查询文档是否有对应的子对象。慢,少用。
has_parent;父查询,返回子。慢,少用。
parent_id;父ID查询,返回子。join类型 。
与其他查询不兼容的查询。
more_like_this;相似查询
script;脚本查询
percolate;存储查询
wrapper;包装查询;查询表达式为base64字符串。
除span_multi外,不可与非跨度查询联用。
span_term;包含term查询。
span_multi;包装查询(wildcard、regexp、fuzzy、prefix、range)。
span_first;前N位查询。
span_near;间距查询。
span_or;或。
span_not;非。
span_containing;含有查询;先big后little,同时满足
span_within;被包含查询;先little后big,little项在big匹配区间被满足。
field_masking_span;跨字段查询。
查询与过滤的合并
search API中只能包含query语句,使用filtered保证filter、query语句。
{ query : { filtered : { filter,query}}}
/_validate/query;验证查询语句是否合法
/_validate/query?explain;查询计划,类似sql explain
suggest属性;纠错、推荐。可有多个建议器,通过可有区分。
completion推荐,phrase纠正,term纠正。
term建议器;term
短语建议器;phrase
推荐建议器;completion,不纠错,专用类型completion。
bucket分组,metric指标,matrix矩阵,pipeline管道。
聚合可以嵌套。
计算一组文档的指标值。数值聚合:单数值聚合、多数值聚合。
avg,max,min,sum;均值,最大值,最小值,总和。
weight_avg;加权平均值。
cardinality;统计不同值个数,hyperloglog++计数,count(distinct name)。
extended_stats;扩展统计汇总,多值聚合。增加方差、标准差等。
percentiles;计算指定字段百分值的数值,多值聚合。返回百分比-数值。
pecentile_ranks;计算指定字段值百分值,多值聚合。返回数值-百分比。
scripted_metric;脚本计算。
stats;统计汇总,多值,包括:min,max,sum,count和avg。
top_hits;最好匹配聚合。类似分组后分页。
value_count;值个数统计。多值字段,统计所有文档的值个数之和
分组,结果集集合。单桶(children,filter,global,missing,reverse_nested),多桶。
adjacency_matrix;邻接矩阵聚合,无向加权图。默认&分隔,低值在前。桶文档数为0时不显示桶。
children;join类型的聚合。
date_histogram;日期直方图,按日期间隔聚合。
date_range;日期范围
filter;单桶聚合。聚合前过滤,只能返回一个桶。
filters;多桶聚合。
global;全局桶。返回索引中全部文档的集合。
histogram;直方图。按间隔聚合。
ip_range;按ip范围聚合
missing;无指定字段聚合,单桶。
nested;嵌套对象聚合
range;范围聚合
reverse_nested;反向嵌套聚合,nested聚合中使用。获取嵌套对象的父对象结果集。
simpler;采样聚合。不可嵌套在breadth_first中。
汇总其他聚合及指标。父级管道(derivative,moving_fn,cumulative_sum,bucket_selector,bucket_sort)、兄弟管道。
父级管道,兄弟管道;按管道要求的聚合区分。
参数:
avg_bucket、max_bucket、min_bucket、sum_bucket;兄弟聚合,要求兄弟必须是多桶聚合。
stats_bucket,extended_stats_bucket;统计桶聚合;兄弟聚合。
percentiles_bucket;百分比桶聚合,兄弟聚合。
moving_fn;移动函数聚合,处理有序数据。父级聚合。histogram,date_histogram中。
cumulative_sum;累计总和。父级聚合。histogram,date_histogram中。
bucket_selector;桶筛选。父级聚合。
bucket_sort;桶排序。父级聚合。
script属性:
脚本内变量
_all;全部索引
index1,index2;多索引
index*,-index1;匹配index开头的索引,去除index1
url参数:
_create;put指定创建
_update;post指定更新
_delete_by_query;查询后删除
_update_by_query;查询后更新
_mget;多查询
_bulk;批量操作
_reindex;重新索引
_termvectors;获取term信息
_mtermvectors;获取多个term信息
_search;搜索
_search_shards;执行搜索的分片信息
_count;计数
_validate/query;验证搜索;_validate/query?explain,解释
_explain;解释搜索与文档的关联,分数计算等
_field_caps;多个索引中检索字段
_rank_eval;排名
索引管理
PUT/DELETE/GET/HEAD indexName;增、删、查、存在
/{index}/_close、_open;关闭、打开
_shrink;收缩索引到新索引
_split;拆分索引到新索引
_rollover;过渡别名到新索引
配置管理
PUT/GET/HEAD _mapping;设置、获取、存在
_alias、_aliases;别名
PUT/GET _settings;设置、获取
_analyze;分析器分析
_template;索引模板
监控
_stats ;索引统计信息
_segments;段信息
_recovery ;恢复信息
_shard_stores;分片存储信息
状态管理
_cache/clear;清除缓存
_flush;文件缓冲区信息刷入磁盘
_refresh;缓存数据刷入文件缓冲区
_forcemerge;合并分段
查看信息
_cat;列出所有cat命令。参数:v标题输出,help显示输出列,h=Cols规定输出列
/_cat/aliases/{alias};别名
/_cat/allocation;节点分片数、存储信息
/_cat/count;文档数
/_cat/fielddata;fielddata使用的内存
/_cat/health;集群健康
/_cat/indices;全部索引
/_cat/master;主节点
/_cat/nodeattrs;节点属性
/_cat/nodes;集群拓扑信息
/_cat/pending_tasks;待处理任务
/_cat/plugins;插件
/_cat/recovery;恢复情况
/_cat/repositories;全部快照信息
/_cat/snapshots/repo1;指定库快照
/_cat/thread_pool;集群线程池信息
/_cat/shards;分片位置信息
/_cat/segments;段信息
/_cat/templates;索引模板
集群
/_cluster/health;集群健康
/_cluster/state;集群状态
/_cluster/stats;集群统计信息
/_cluster/pending_tasks;待处理任务
/_cluster/reroute;移动分片
/_cluster/allocation/explain;集群分配解释
GET/PUT /_cluster/settings;获取、修改集群配置
节点
/_nodes/stats;节点统计信息。/_nodes/nodeId1,nodeId2/stats
/_nodes;节点信息
/_nodes/usage;功能使用信息
/_nodes/hot_threads;节点热线程信息
其他
/_remote/info;集群信息
_tasks;当前任务
其他配置,settings,mappings
static;静态配置,创建索引、关闭索引时才可修改
dynamic;动态配置。
https://www.elastic.co/guide/en/elasticsearch/reference/6.4/index-modules.html#_static_index_settings
static
number_of_shards;主分片数,5默
analysis;自定义分析器。全局<索引<字段
shard.check_on_startup;启动时检测;false默,checksum检查物理损坏,true检查物理和逻辑损坏,fix检查损坏并删除损坏。
codec;编码方式
routing_partition_size;自定义路由可到达的分片数,1默
load_fixed_bitset_filters_eagerly;为嵌套查询预加载缓存,true默
dynamic
number_of_replicas;副本数,1默。
auto_expand_replicas;自动扩展副本数。false默,0-5上下限
refresh_interval;刷新频率,缓冲区–文档写入缓存区;1默,-1禁用
blocks系列;阻塞对索引的操作
routing系列;路由策略
priority;恢复优先级。正比。
search.slowlog.,indexing.slowlog.;查询慢日志,索引慢日志;默认禁用。
translog系列;传输日志,持久化。
根属性
_index,_type,_id,_uid;元数据
_source;源文档信息。_source{ excludes: [fNames]}},只索引不存储
properties;映射信息
dynamic;动态映射。true默,false,strict
date_detection;日期检测
dynamic_date_formats;日期格式
number_detection;数值检测
字段属性
type;数据类型。string、number、date、boolean、binary、range、object/nested
analyzer;索引分析器
search_analyzer;查询分析器,默认analyzer
normalizer;text转keyword
boost;权重
index;是否索引,true默,false不允许搜索
index_options;倒排索引信息。docs、freqs、positions、offsets;前包。
format;日期格式化
coerce;类型强转
copy_to;复制字段,组合多个字段
doc_values;存储与_source字段相同的数据,非analyzed字段的正向索引。true默
store;单独存储,一般用于大字段,只索引不返回,在_source中排除。
enabled;对object类型,只存储不索引。
fields;多重字段,下级字段
ignore_above;索引、排序时忽略超长部分
ignore_malformed;忽略类型错误,对应字段设为null
norms;存储计算得分的信息;true默
null;null值替换形式。null不可存储,存替换字符串。
position_increment_gap;短语查询间距,优先级小于slop
properties;映射,object、nested类型使用。
term_vector;存储匹配的term信息,便于后续使用,如高亮。no默,yes,with_positions/offsets/positions_offsets
aliases;别名
字符过滤器,分词器,标准化过滤器
GET /_analyze { analyzer, text};测试分析器
分词 | 标准化 | |
Standard | Unicode | Text |
Simple | 非字母字符 | 转小写 |
Whitespace | 空格 | 无 |
Stop | 非字母字符 | 转小写,删除停用词 |
Keyword | 不分词,原样返回 | 无 |
Pattern | 正则分词 | 转小写,删除停用词 |
Language | 特定语言的分析器,如english、french | |
Fingerprint | 特殊分析器,检查重复 |
配置内建分析器
{
"settings": {
"analysis": {
"analyzer": {
"std_english": {
"type": "standard",#分析器类型
"stopwords": "_english_" #停用词类型
}
}
}
}
}