
ElasticSearch
文章平均质量分 96
ElasticSearch实战,对于任何技术人才都是必须要懂的
ywl470812087
个人简介:深耕物联网行业,ERP,优快云博客专家。 任职华为网联网智慧照明、空调资深工程师,并且上线投产使用,研发企业亿量级吞吐中间件。 擅长 Java语言、C语言等。
展开
-
ElasticSearch原理
3.1解析es的分布式架构3.1.1分布式架构的透明隐藏特性ElasticSearch是一个分布式系统, 隐藏了复杂的处理机制分片机制:我们不用关心数据是按照什么机制分片的、最后放入到哪个分片中分片的副本:集群发现机制(cluster discovery):比如当前我们启动了一-个es进程,当启动了第二个es进程时,这个进程作为-个node自动就发现了集群,并且加入了进去shard负...原创 2020-03-25 22:08:21 · 131090 阅读 · 0 评论 -
Elasticsearch查询性能优化
constant_score的用处当我们不关心检索词频率TF(Term Frequency)对搜索结果排序的影响时,可以使用constant_score将查询语句query或者过滤语句filter包装起来。检索词频率:检索词在该字段出现的频率。出现频率越高,相关性也越高。字段中出现过5次要比只出现过1次的相关性高。合理使用filters优化查询ElasticSearch支持多种不同...原创 2020-03-25 22:04:46 · 112163 阅读 · 0 评论 -
ElasticSearch 复合查询
复合查询语句:#复合查询GET /lib3/user/_search{ "query": { "bool": { "must": { "match": {"interests": "changge" } }, "must_not": { "match": { "interests": "1vyou" }}, ...原创 2020-03-25 21:32:15 · 117586 阅读 · 0 评论 -
ElasticSearch 聚合查询
价格总和:1,使用aggs 2,自己起个名字price_of_sum 3,求和sum 4,filed要求和的字段GET /lib5/items/_search{ "aggs": { "price_of_sum": { "sum": { "field": "price" } } }}聚合查询结果:{...原创 2020-03-24 21:46:51 · 115503 阅读 · 0 评论 -
ElasticSearch bool过滤查询
bool过滤查询可以实现组合过滤查询格式:{ "bool": { "must: 0, "should: O, "must not":0}}must:必须满足的条件---andshould:可以满足也可以不满足的条件--ormust_ not:不需要满足的条件--notGET /lib5/items/_search { "post_filter": { "bool...原创 2020-03-24 21:15:48 · 116403 阅读 · 0 评论 -
ElasticSearch filter查询
学习查询之前,我还是老规矩,先准备数据#Filter查询#filter是不计算相关性的,同时可以cache.因此,filter速度要快于query.POST /lib5/items/_bulk{"index":{"_id": 1}}{"price": 40,"itemID": "ID100123"}{"index":{"_id": 2}}{"price": 50,"itemID"...原创 2020-03-21 18:51:21 · 117373 阅读 · 0 评论 -
ElasticSearch模糊查询(中文检索)
# "*" 表示匹配任意字符GET /lib4/user/_search{ "query": { "wildcard": {"name": "赵*"} }}# "?" 表示匹配任意一个字符GET /lib4/user/_search{ "query": { "wildcard": {"name": "li?i"} }}fuzzy实现模糊查询...原创 2020-03-21 15:52:19 · 117573 阅读 · 0 评论 -
ElasticSearch前缀匹配查询和范围查询(中文检索)
GET /lib4/user/_search{ "query": { "match_phrase_prefix": { "name": {"query": "赵"} } }}GET /lib4/user/_search{ "query": { "prefix": { "name": "赵" } }}...原创 2020-03-21 15:09:56 · 110925 阅读 · 0 评论 -
ElasticSearch(中文检索)source总结
包含不包含这里不多讲了。GET /lib4/user/_search{ "query": { "match_all": {} }, "_source": { "includes": ["name" ,"address"], "excludes": ["age" , "birthday" ] }}直接看看结果{ "took" : 5...原创 2020-03-21 14:07:40 · 122694 阅读 · 0 评论 -
term和match查询总结(中文检索)
es中的查询请求有两种方式,一种是简易版的查询,另外一种是使用JSON完整的请求体,叫做结构化查询(DSL)。由于DSL查询更为直观也更为简易,所以大都使用这种方式。DSL查询是POST过去一个json,由于post的请求是json格式的,所以存在很多灵活性,也有很多形式。这里有一个地方注意的是官方文档里面给的例子的json结构只是一部分,并不是可以直接黏贴复制进去使用的。一般要在外面加个q...原创 2020-03-21 10:15:10 · 131942 阅读 · 0 评论 -
基本查询(Query查询中文)
查询语句:GET /lib4/user/_search{ "query": { "term": {"interests":"唱歌"} }}#terms:查询某个字段里含有多个关键词的文档GET /lib4/user/_search { "query":{ "terms":{ "interests": ["喝酒","唱歌"] } ...原创 2020-03-17 22:22:49 · 125069 阅读 · 0 评论 -
ElasticSearch highlight搜索结果高亮显示(英文检索)
高亮显示搜索结果(使用highlight)#高亮搜索结果GET /lib3/user/_search{ "query":{ "match":{"interests": "changge" } }, "highlight": { "fields": {"interests":{}} } }{ "took" : 2075, "tim...原创 2020-03-17 21:46:44 · 111064 阅读 · 0 评论 -
ElasticSearch fuzzy模糊查询(英文检索)
fuzzy实现模糊查询value:查询的关键字boost:查询的权值,默认值是1.0min_similarity:设置匹配的最小相似度,默认值为0.5, 对于字符串,取值为0-1(包括0和1);对于数值,取值可能大于1;对于日期型取值为1d,1m等,1d就代表1天prefix_length:指明区分词项的共同前缀长度,默认是0max_expansions:查询中的词项可以扩展的数目,...原创 2020-03-17 21:39:00 · 115197 阅读 · 0 评论 -
ElasticSearch wildcard查询(英文检索)
wildcard查询允许使用通配符*和?来进行查询*代表0个或多个字符工代表任意-一个字符GET /ib3/user/ search { "query": { "wildcard":{ "name": *zhao* }}}GET /ib3/user/ search { "query": { "wildcard":{ *name": "Ii?i"}}}#wildcard查询允许使用...原创 2020-03-17 21:26:24 · 106648 阅读 · 0 评论 -
ElasticSearch查询返回信息根据字段排序(英文检索)
根据年龄降序排序#排序GET /lib3/user/_search{ "query": { "match_all": {} }, "sort":[ {"age": {"order" :"desc"}} ]}{ "took" : 1, "timed_out" : false, "_shards" : { "total" : 5,...原创 2020-03-16 22:07:25 · 125060 阅读 · 0 评论 -
ElasticSearch前缀匹配查询(英文检索)
#前缀匹配查询#前缀匹配查询GET /lib3/user/_search{ "query": { "match_phrase_prefix": { "name":{"query":"zhao"} } }}{ "took" : 59, "timed_out" : false, "_shards" : { "total" :...原创 2020-03-16 22:08:29 · 121959 阅读 · 0 评论 -
ElasticSearch范围查询(英文检索)
#根据日期范围查询#范围查询GET /lib3/user/_search{ "query": { "range": { "birthday": { "from": "1990-10-10", "to": "2020-03-15" } } }}{ "took" : 24, "timed_out...原创 2020-03-16 22:08:13 · 106378 阅读 · 0 评论 -
ElasticSearch通配符 * 查询(英文检索)
#如果你要查询的字段信息记得不太清楚, 我们也可以使用通配符 *GET /lib3/user/_search{ "from":0, "size": 2, "_source": { "includes": "addr*", "excludes": ["name" , "bir*"] }, "query": { "match_all": {}...原创 2020-03-16 22:07:45 · 109035 阅读 · 0 评论 -
elasticsearch控制返回字段查询三(英文分词)match查询
#_source指定查询返回的字段信息#_source指定查询返回的字段信息GET /lib3/user/_search{ "from":0, "size": 2, "_source": ["address" , "name"] , "query": { "match": {"interests": "changge"} }}#incl...原创 2020-03-15 12:23:57 · 124416 阅读 · 0 评论 -
elasticsearch基本查询三(英文分词)match查询
#match查询#match query知道分词器的存在,会对filed进行分词操作, 然后再查询GET /ib3/user/_search { "query":{ "match":{ "name": "zhaoliu" } }}GET /lib3/user/_search { "query":{ "match":{ "age": 20} }...原创 2020-03-15 12:07:41 · 126471 阅读 · 1 评论 -
elasticsearch基本查询二(英文分词)term和terms查询
term和terms查询(查找zhaoliu这个人的信息)term query会去倒排索弓|中寻找确切的term,它并不知道分词器的存在。这种查询适合keyword、numeric. date.term:查询某个字段里含有某个关键词的文档GET /lib3/user/_search/ { "query":{ "term": {interests": "changge"}}}terms:查询...原创 2020-03-15 11:17:27 · 119884 阅读 · 0 评论 -
用Java代码在ElasticSearch中索引PDF文件?
以下是我的代码: InputStream inputStream = new FileInputStream(new File("mypdf.pdf")); try { byte[] fileByteStream = IOUtils.toByteArray(inputStream ); String ba...转载 2020-03-15 11:09:36 · 104839 阅读 · 0 评论 -
ES学习笔记之-ClusterState的学习
前面研究过ES的get api的整体思路,作为编写ES插件时的借鉴。当时的重点在与理解整体流程,主要是shardOperation()的方法内部的调用逻辑,就弱化了shards()方法。实际上shards()方法在理解ES的结构层面,作用更大一些。我们还是从get api入手来理解shards()。先回顾一下get api的使用流程: 添加文档到ES: curl -XPUT 'http...转载 2020-03-15 11:05:47 · 107140 阅读 · 0 评论 -
Elasticsearch内存
核心概念基于Lucene Java应用内存使用分析Lucene的内存消耗倒排索引。(堆内存) Lucene中,索引是存储在磁盘中,一个索引(Index)由多个段(Segment)组成。当启动IndexSearcher时,会把倒排索引加载到内存中,基于不同的数据类型生成不同的词典,比如text生成FST结构的词典,数值类型生成Bkd tree。 Doc Values(操作系统缓存...转载 2020-03-15 10:48:53 · 101343 阅读 · 0 评论 -
Elasticsearch索引的数据存储路径是如何确定的
Elasticsearch中,在node的配置中可以指定path.data用来作为节点数据的存储目录,而且我们可以指定多个值来作为数据存储的路径,那么Elasticsearch是如何判断应该存储到哪个路径下呢?今天我就记录一下这个问题。Elasticsearch的索引创建过程集群master收到创建索引的请求后,经过创建索引的一些步骤,最终会将索引创建完成的请求提交到ClusterStat...转载 2020-03-15 10:46:56 · 112121 阅读 · 0 评论 -
为什么ElasticSearch应用开发者需要了解cluster state
原文链接:https://www.loggly.com/blog/p...在前面的文章(ES vs Solr)中我们提到, ES构建了Loggly的很多核心功能. 在把这项通用搜索技术用于我们的日志管理系统, 并为超过5000多客户提供准实时服务的过程中, 我们在技术上成长颇多. 按照我们对开源社区的尊重, 在此希望能把我们所学到的知识回馈到社区.本文将探讨对ES扩展过程中的性能有深...转载 2020-03-15 10:44:21 · 118241 阅读 · 0 评论 -
ElasticSearch vs. Solr
为何日志服务商Loggly选择ElasticSearch而非Solr.原文链接:http://loggly.wpengine.com/bl...在Gen2产品的早期阶段, 我们事实上是失败的, 这促使我们重新审视我们现有的技术栈. 我们仔细分析系统中的每个独立的组件,并记录下来, 当然其中也包括构成我们核心功能的搜索引擎技术.在我们的通用日志管理系统场景中, 提供了对每条单独日志事...转载 2020-03-15 10:43:48 · 116597 阅读 · 0 评论 -
ElasticSearch基本查询一(英文分词)
废话不多说首先准备数据,我们先添加几个文档PUT /lib3/user/1{ "name" : "zhaoliu", "address" :"hei long jiang sheng tie ling shi", "age" : 50, "birthday" : "1970-12-12", "interests": "xi buan hejiu, duanlian, ...原创 2020-03-14 19:43:35 · 116729 阅读 · 0 评论 -
ElasticSearch手动创建mapping
前面也提到过关于手动创建mapping,接着上一篇关于object类型存储以及mapping的介绍,我们接下来就介绍下如何手动创建mapping#手动创建mappingPUT /lib6{ "settings":{ "number_of_shards" : 3, "number_of_replicas" : 0 }, "mappings":{ "b...原创 2020-03-14 18:39:35 · 119896 阅读 · 0 评论 -
ElasticSearch的Object数据类型
上一篇mapping文章我们知道数字类型和日期类型要精确查找,以及mapping的两个重要的作用。所以创建索引的时候,是不是可以预先定义字段的类型以及相关属性,这样就能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理字符串值等。支持的数据类型:(1)核心数据类型(Core datatypes)字符型:string,string类型包括text 和 k...原创 2020-03-14 12:21:02 · 121716 阅读 · 1 评论 -
ElasticSearch关于映射mapping介绍
#首先我们还是先增加几个文档PUT /myindex/article/1{ "post_date": "2020-03-14", "title": "Java", "content": "java is the best language", "author_id": 119}PUT /myindex/article/2{"post_date": "2020-03-14"...原创 2020-03-14 12:18:14 · 124454 阅读 · 0 评论 -
Bulk API实现批量操作
Bulk 批量操作(1) 比如,我这里,在$ES_HOME里,新建一文件,命名为requests。(这里为什么命名为request,去看官网就是)在Linux里,有无后缀没区别。 1 2 3 4 5 6 7 8 9 10 [root@backup01 elasticsearch-6.8.6]...原创 2020-03-12 21:36:20 · 105913 阅读 · 0 评论 -
Multi GET API
Multi GET API介绍GET /lib/user/_mget{ "docs":[ { "_id":1 }, { "_type":"user", "_id":2 } ]}#返回值{ "docs" : [ { "_index" : "lib", ...原创 2020-03-12 21:24:21 · 115558 阅读 · 0 评论 -
Multi GET API介绍
#先添加几个文档PUT /lib/user/1{ "first_name":"Jane", "last_name":"Smith", "age":36, "about":"I like to collect rock albums", "interests":["music"]}PUT /lib/user/2{ "first_name":"Jane", ...原创 2020-03-11 22:07:10 · 105455 阅读 · 0 评论 -
kibana客户端工具操作ElasticSearch(增删改查三)
之前一直我们讲的是添加文档和查看文档,下面我们看下怎么修改文档,第一种方式PUT 覆盖原来的文档修改文档(覆盖原来的):PUT /lib/user/1{ "first_name":"Jane", "last_name":"Smith", "age":32, "about":"I like to collect rock albums", "...原创 2020-03-11 21:36:47 · 114308 阅读 · 0 评论 -
ElasticSearch映射Mapping
什么是Mapping映射?映射:创建索引的时候,可以预先定义字段的类型以及相关属性。作用:这样会让索引建立得更加的细致和完善!分类:静态映射和动态映射ElasticSearch在做字段映射的时候可以定义的类型映射的属性方法除了定义字段的类型,还可以给字段定义相关的属性...原创 2020-03-10 21:56:03 · 124857 阅读 · 1 评论 -
ElasticSearch外部版本控制
#外部版本控制机制|PUT /library/books/1?version=5&version_type=external{ "title": "Elosticsearch: The Definitive Guide" , "name":{ "first" : "Zachary", "last" : "Tong" }, "publish_date":...原创 2020-03-09 21:41:50 · 109419 阅读 · 0 评论 -
elasticsearch内部版本控制
现在我将这个price价格改为10,看下版本有什么变化?获取一下返回结果我们知道价格price已经修改为10,_version已经变成2我们把参数version改成2试试我们从执行结果可知,我们已经修改成功,并且版本自增为3...原创 2020-03-09 20:52:22 · 108358 阅读 · 0 评论 -
Bulk处理文档大小的最佳值
原创 2020-03-08 20:54:02 · 108941 阅读 · 0 评论 -
Bulk批量操作API的介绍
#多重模式#批量操作bulkPOST /library/books/_bulk{"index": {"_id": 1}}{"title":"Elasticsearch: The Definitive Guide","price":5}{"index": {"_id": 2}}{"title":"The Elasticsearch cookbook","price...原创 2020-03-08 20:33:56 · 115832 阅读 · 0 评论