ES 总结:

es 是基于lucene的, 是java 实现的, 很多概念和lucene是相同的

索引—— 对应数据库的表,mongoDB中的集合

文档,由字段组成, 一个字段可以出现多次。

字段,其类型可以是任意的, 也可以是复合的, 注: 不同类型的同名字段不能设置为不同类型。

分片:每个分片是一个独立的lucene实例, 一个独立的jvm, 一个索引的数据可以有多个 分片组成———— 数据量大的时候, 通常都是这样的, 而且每个分片都是位于集群不同的节点上。

分片的大小是不能控制的, 但是分片数量是可以控制的

副本:或者说副本分片, 他是对原始分片的精确拷贝, 原始分片称为主分片。 它是相对分片的一个概念。 通常,我们对索引的所有操作都是直接作用在主分片上, 然后, es 会将操作同步到副本上去。

主分片不可用了(如对应节点down 掉) 副本会被提升为 主分片。 主分片和其副本是位于不同 节点上的, 这个是必须的, 否则副本不会被分配下去。 因为同一个节点上同时分配主分片/副本是无意义的。 机制决定的。

配置:

rack 表示机架

ip默认是localhost, 只能本机访问, 需要改为具体ip, 以便局域网内其他机器可用访问。

默认端口是 9200, 如果默认端口不可用, 则会自动绑定下一个端口..?

put 和post 的区别, put 可用创建一个不存在的索引, 类型, 或者同时, post 操作时候, 可以创建索引, 但不能同时创建索引/类型, id 也需要指定。。

post 更新文档: 需要先从_source 获取数据, 移除旧文档,应用变更,作为一个新文档创建。 ?? 这么复杂/麻烦?

———— 如果没有启用 _source 字段, 怎么办?

REST 通过请求头的动词操作, 但是有时候我们需要其他辅助:

_create 指明是创建操作

_update 指明是更新

_search 指明是 search API,

_id 指明id 字段

_type:指明type 获取方式

_all 一个复制了所有其他属性内容的 字段,默认开启, 用于:

_version

_size _source字段原始的

_index 默认禁用 文档被索引到那个 索引文件的信息

_boost

_timestamp 默认禁用,不会存储/索引

_ttl

_shards

upsert

...

URL 的 参数:

pretty 适用于GET操作

routing

映射:

设置字段的类型,存储方式:

如:

PUT /lfs_files

{

"mappings": {

"my_file" : {

"_id": {

"path": "id"

},

"dynamic": "strict",

"date_detection": false

"properties" : {

"id" : {

"type" : "long",

"index": "not_analyzed"

},

"userId" : {

"type" : "long",

"index": "not_analyzed"

...

}

}

}

}

index_name, 可不写,默认为字段名。

index 可以为analyzed 或no , 默认analyzed

或对字符串类型字段 可以是 not_analyzed , 表示只会, 整个存储起来, 但是不会被分析(就是不会被空格处理/大小写/特殊字符过滤等等之类的), 只有完全匹配的搜索才能查到该字段

store yes/no, 默认no, 指定是否存储字段原始值。。

boost 权重, 评分用的, 一般用于结果的排序, 过滤

null_value : 索引时候, 不存在时, 写入的默认值, 如果没有默认行为是忽略。

include_in_all , 是否被包含到 _all 字段中,

_source 字段: 它到底是什么东西?

字符串型:

特有属性:

term_vector: —— 高亮时需要

omit_norms:

index_options:

analyzer: 泛指index_analyzer,search_analyzer, 默认是全局定义的分析器

index_analyzer: 用于索引时

search_analyzer:用于搜索时

ignore_above: 字段的最大长度

数值型:string

precision_step: range 查询时候有用

ignore_malformed:

日期:date

format:

precision_step

ignore_malformed

布尔型: boolean

二进制: binary

只支持 index_name 属性

multi_field:

fields : {}

...

内置分析器:

自定义分析器:

{

settings:{

index: {

analysis: {

analyzer:{

自定义分析器名称:{

tokenizer: xxx 如standard

filter: [

lowercase,

asciifolding,

自定义过滤器名

]

}

}

},

filter:{

自定义过滤器名:{

type: kstemxxx

}

}

}

}

mappings:
类型名:
_analyzer: {
path: xxx ———— 指明分析器名为 path 对应的字段的那个值, 用于动态设置。。
}
_source: {
enabled : false +++++ false 或者true, 表明是否存储文档源, ———— 具体表明了??
}
_all: {
enabled : false +++++ false 或者true, 表明是否在_all 字段包含所有文本字段的取值。。 false 表示禁用。 它会自动索引大小, 不需要的时候, 最好禁用。
} // 动态映射, 即不具体制定字段类型的时候, 只能靠es来猜了, 那么, 具体如何猜呢? 它会先参考 动态映射。 当然,如果没有动态映射, 那么就使用默认的机制猜测。
numeric_detection: true/ false
dynamic_date_formats: [yyyy-MM-dd hh:mm ] 是一个数组 //
dynamic: false 禁用自动生成映射, 同时禁止自动添加新字段。 默认 true dynamic_templates: [
template名: {
match: "*"
//unmatch: ""
mapping: {
type: multi_field,
fields :{
{name}: { type: dynamic_type},
str: { type: string}
}
}
}
] _routing: {
xxx
}
properties: {
xx
}
}
}

}

//模板

{

template: "*"

order: 1,

settings: {

index.number_of_replicas: 0

}

mappings:{

default: {

_source: {

enabled: false

}

}

}

}

动态模板:

xxx

路由:

routing 参数

_routing 字段:

_routing: {

requered: true,

path:userId

}

es 全部可用的过滤器类型列表:

官网。。。

默认分析器: 索引时候, 未指明分析器,那么使用这个。

{

settings:{

index: {

analysis: {

analyzer:{

default:{ --- 使用 default 关键字即可

tokenizer: xxx 如standard

filter: [

lowercase,

asciifolding,

自定义过滤器名

]

}

}

},

filter:{

自定义过滤器名:{

type: kstemxxx

}

}

}

}

}

别名:

_aliases 参数

搜索数据:

查询/索引的过程:

索引过程:

搜索过程:

分析过程: 预备字段内容,将其转换为词项(term)的过程, 索引时, 内容 被拆分为 词条流。 —— 词项是带有输入位置等额外信息的词条。词条:单词

词条化:tokenizer ?

过滤: filter?

分析器: 带有0或多个过滤器的分词器。

================================================================================================================================================

查询:

url 查询

DSL

分页

返回版本号

{

version: true

...

}

限制结果分数:

min_score

指定返回字段:

fields : [ xxx, yyy], 如果没有指定,你们使用默认的 _source, * 表示所有存储的字段

partial_fields:

script_fields:

自定义字段名

script:xxx

搜索类型:

query_and_fetch

。。

count

scan&scroll

dfs_xx

指定搜索执行的位置:

_primary

_local

..

查询类型:

term 查询:

terms 查询:

match

match_phrase

match_phrase_prefix

match_all

multi_match

query_string

field 对query_string 的简化

ids

prefix

fuzzy

wildcard

mlt

range

查询重写:

rewrite

过滤查询结果:

使用过滤器 先查询,再过滤

{

query xxx

filter xxx

}

filtered 先过滤,再查询(效率更高)

{

query

filtered

query

field —— 这个是什么查询类型

filter

term —— term查询

}

过滤器有哪些:

range

term

exists

missing

script

type 用于查询多个索引, 很多文档类型的时候, 用于过滤,限制文档类型

limit 限制每个分片的返回的文档数目

ids

bool and or not

过滤器的别名

过滤器的缓存:

复合查询:

bool 组合

boosting 组合

positive

negative

negative_boost

constant_score

indices 在多个索引上进行查询, 封装一个 索引的数值, 两个查询

indices

indices []

query

no_match_query

custom_fileters_score 封装一个查询, 若干过滤器

custom_boost_factor

custom_score 通过脚本为另一个查询定制分值

排序:

默认排序: score

sort

指定确实字段的行为

动态标准

sort

_script

script

2.8 使用脚本

script

lang 默认mvel

params 脚本参数

使用方法:

_script

script 脚本内容或者 脚本文件名

lang 默认为 mvel

params 参数

脚本中可用的对象:

doc 也可以是 _doc doc['xxx'].value 方式访问 处理(分析)后的文档

_source _source.xxx.value 方式访问 原始字段值

_fields _fields.xxx.value 方式访问 ?

结果分析:

took

timed_out

hits {

total

max_score

hits: [

_index

_type

_id

_version

_source : {

xxx

}

]

}

================================================================================================================================================

================================================================================================================================================ 插件

插件

JavaScript 语言插件

处理文件插件:

elasticsearch/elasticsearch-mapper-attachments

bigdesk

lukas-vlcek/bigdesk

head

mobz/elasticsearch-head

paramedic

SPM

================================================================================================================================================ 非平面数据

非平面数据

对象 obj: {

type : object,

properties : {

attr1: {

type : xxx

xxx

}

...

}

}

数组 arr: {

properties : {

element1: {

type : xxx

xxx

}

...

		}
}

================================================================================================================================================ 高亮:

高亮:

需要字段原始值: 字段要么 store = yes, 如果是no, 那么 _source 应该是可用的, 否则, 无法高亮。。。

实现:

1 标准实现

2 依赖于term向量

es 会自动选择

html 标签:

{

highlight

pre_tags: [ ]

post_tags: [ ]

fields

requered_field_match

	number_of_fragements
fragment_size

}

================================================================================================================================================

自动补全

autocomplete

edgeNGram

统计/切面 faceting facet

================================================================================================================================================

================================================================================================================================================ 优化

分析:

_analyze?analyzer=xxx 指定分析器进行分析, 没有analyzer 则使用默认的分析器

_analyze?tokenizer=xxx&filters=xx,yy

解释查询

_explain 查询参数

================================================================================================================================================

================================================================================================================================================ 同义词

{

settings:{

index: {

analysis: {

analyzer:{

synonym分析器: {

tokenizer

filter: [

synonym名

]

}

}

},

filter:{

synonym名:{

type: synonym

ignore_case: true

synonyms: [

jump => leap

...

]

}

}

}

可见,synonym 就是一个分析器, 但是他的 过滤器的类型是 synonym

synonym_path 可以代替synonyms, 表示一个文件

使用 solr 的同义词

同义词等价定义

扩展

使用WordNet 同义词

================================================================================================================================================

================================================================================================================================================ span 查询

span_term

span_first

span_near

span_not

span_or

================================================================================================================================================

================================================================================================================================================ 组合索引

variation API

索引树性结构

url 参数:

parent

child

字段:

_parent

_child

has_child

has_parent

嵌套对象

================================================================================================================================================

================================================================================================================================================ river

mongodb 插件

================================================================================================================================================

================================================================================================================================================ 网关

================================================================================================================================================

================================================================================================================================================ 批量操作

_bulk url 参数

{

create:

update:

delete:

index:

...

}

UDP 批量操作:

批量取

_mget

批量查询

_msearch

================================================================================================================================================

================================================================================================================================================ 统计/切面

统计/切面 是针对 一个或多个索引的, 多个类型? 一个类型? 反正一个文档, 肯定是不行的, 数据量太少, 怎么统计, 毫无意义啊

query 统计

得到匹配查询的结果数目

filter 统计

得到匹配查询的结果数目

terms 统计

返回指定字段中使用最多的词项

range 统计

返回某个范围的 结果数目

它会继续 min max mean count total 等值

histogram 统计

对字段取值按间隔 统计, 建立直方图 , 只对 数字/ 日期型 字段中,

间隔: 通过 interval 控制

date_histogram 统计

statistical 统计

min max mean 平方和 总和 方差 标准差 等等

terms_stats 统计

综合了 terms/ statistical 统计

geo_distance 统计

过来统计结果:

facet_filter

统计计算范围:

scope

nested

================================================================================================================================================

================================================================================================================================================ 相似文档

_mlt 查询参数

min_doc_freq

min_term_freq

...

================================================================================================================================================

================================================================================================================================================ 反查 percolator

_percolator 查询参数

感觉好奇怪,

对文档进行反查?

0 准备,假设存在一个 notifier 的索引,

其中存在类型:

数据:

1 先向 名为_percolator 的索引中, 注册一个查询, 也就是往 _percolator 的索引存入一个文档。 这个是一个普通的put

put _percolator/notifier/id {

query: { xxx } --- 这个字段是必须的, 反查嘛。。

自定义的字段。。。

}

2 用户对notifier 进行查询 等操作 —— 这个过程是用户端发生的

3 进行反查, 也就是对刚才的notifier的索引的 x/_percolator 部分。 这个是一个特殊的查询了

特殊的是, 需要一个x 查询参数 , why ??

GET notifier/x/_percolator

{

doc:{

notifier 的一个文档内容 documentX

}

query: {

查询条件 Q

}

}

这个意思是说,

用户进行了很多对notifier 的查询, 那么, 他们是否有人曾经查询过documentX呢, 以 Q 的方式, 换句话说, 是否有人以Q 方式使用特定的这 documentX 呢

================================================================================================================================================

================================================================================================================================================ 节点探索 discovery

zen directory

================================================================================================================================================

================================================================================================================================================ 管理集群

_stats 查询参数 进行 统计

docs 统计信息

store 统计信息

indexing

get

search

_cluster

主节点:

node.master

node.data

discovery.zen.minimum_master_nodes 最小集群节点数

================================================================================================================================================

================================================================================================================================================ 端点

_validate/query 验证

_cluster

nodes

state

_status

_nodes

索引分段

_segements

控制分片 副本

node.zone

移动分片 reroute

post _cluster/reroute

{

commands: {

{

move : {

from

to

..

		}

		allocate
}
}

}

================================================================================================================================================

================================================================================================================================================ url 参数

================================================================================================================================================ 滚动

如何操作:

1 先建立scroll 查询, 获取 scroll_id

字段: _scroll_id

url 查询参数 scroll_id

2 然后使用 scroll_id

3 ...

================================================================================================================================================ 特殊字段

================================================================================================================================================ 再平衡 rebalancing

================================================================================================================================================ 预热

_warmer

warm_facet

ES 学习总结的更多相关文章

  1. OpenGL ES学习笔记(三)——纹理

    首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <OpenGL ES学习笔记( ...

  2. ES学习笔记

    ES学习 1. 安装 1.1 ES 安装配置 curl -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5. ...

  3. OpenGL ES 学习笔记 - Overview - 小旋的博客

    移动端图形标准中,目前 OpenGL ES 仍然是比较通用的标准(Vulkan 则是新一代),这里新开一个系列用于记录学习 OpenGL ES 的历程,以便查阅理解. OverView OpenGL ...

  4. OpenGL ES学习笔记(一)——基本用法、绘制流程与着色器编译

    首先声明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. 在Android.iOS等移动平台上 ...

  5. OpenGL ES学习资料总结

    从今年春节后开始学习OpenGL ES,发现网上资料很有限,而且良莠不齐,所以整理了一下我学习时用到的资料和一些心得. 1. OpenGL ES1.x参考资料 把NEHE的教程移植到了Android上 ...

  6. OpenGL ES学习笔记(二)——平滑着色、自适应宽高及三维图像生成

    首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <Android学习笔记--O ...

  7. Es学习第十一课,使用java操作elasticsearch

    前面十节课我们已经把ES的基本概念和使用讲的差不多了,现在我们就用基于java来实际开发一个操作ES的小项目,带大家来一起练练手. 1.我们用IDEA创建一个maven项目 项目结构如上图所示,然后我 ...

  8. Es学习第一课,了解基本功能和概念

    Elasticsearch作为这几年最流行的搜索引擎,越来越多的互联网企业都在采用它:作为java开发者来说,如果想进一步提高自己能力,同时也为了能够在实际工作中遇到搜索.存储问题多一个解决方案,学习 ...

  9. ES学习总结

    1.创建索引 put localhost:9200/person 2.添加数据 put  localhost:9200/person/_doc/1 { "first_name" : ...

随机推荐

  1. 利用XAG在RAC环境下实现GoldenGate自动Failover

    概述 在RAC环境下配置OGG,要想实现RAC节点故障时,OGG能自动的failover到正常节点,要保证两点: 1. OGG的checkpoint,trail,BR文件放置在共享的集群文件系统上,R ...

  2. Android注解使用之通过annotationProcessor注解生成代码实现自己的ButterKnife框架

    前言: Annotation注解在Android的开发中的使用越来越普遍,例如EventBus.ButterKnife.Dagger2等,之前使用注解的时候需要利用反射机制势必影响到运行效率及性能,直 ...

  3. jQuery学习之路(8)- 表单验证插件-Validation

    ▓▓▓▓▓▓ 大致介绍 jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方法,包括 ...

  4. 学习笔记之MVC级联及Ajax操作

    由于刚转型到MVC,MVC的架构模式很多不是很清楚,比如今天就想做个级联的操作,因为之前的ASP.NET的方式是通过:控件-->添加事件-->后台编写级联事件进行触发,但是这个MVC就不同 ...

  5. 使用SecureCRT连接虚拟机(ubuntu)配置记录

    这种配置方法,可以非常方便的操作虚拟机里的Linux系统,且让VMware在后台运行,因为有时候我直接在虚拟机里操作会稍微卡顿,或者切换速度不理想,使用该方法亲测本机效果确实ok,特此记录. Secu ...

  6. 七牛云:ckeditor JS SDK 结合 C#实现多图片上传。

    成功了,搞了2天.分享一下经验. 首先是把官方的那个例子下载下来,然后照如下的方式修改. 其中tempValue是一个全局变量. function savetoqiniu() { var upload ...

  7. ASP.NET中常用的优化性能的方法

    1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池( ...

  8. 编译器开发系列--Ocelot语言1.抽象语法树

    从今天开始研究开发自己的编程语言Ocelot,从<自制编译器>出发,然后再自己不断完善功能并优化. 编译器前端简单,就不深入研究了,直接用现成的一款工具叫JavaCC,它可以生成抽象语法树 ...

  9. 网站缓存技术总结( ehcache、memcache、redis对比)

    网站技术高速发展的今天,缓存技术已经成为大型网站的一个关键技术,缓存设计好坏直接关系的一个网站访问的速度,以及购置服务器的数量,甚至影响到用户的体验. 网站缓存按照存放的地点不同,可以分为客户端缓存. ...

  10. 项目游戏开发日记 No.0x000001

    14软二杨近星(2014551622) 既然已经决定了开发软件, 时不时就要练练手, 还要时不时的去寻找素材, 因为开发的人物设定就是DotA2里面的祈求者, 所以, 就去找了他的相关人物图片和模型, ...