ElasticSearch从0到1
工作中,由于项目需要,接触到ElasticSearch,期间领略到其无穷的魅力,希望能够更加深入的学习,并逐步学习其相关的其他生态内容.
温水的小青蛙2023
躺平后的崛起,不知不觉成了温水中青蛙,现在想要努力的跳出去
展开
-
ElasticSearch——跨域访问
跨域请求:ES服务器安装部署成功之后从另外一个域的浏览器访问ES服务器数据,会出现跨域的问题。抛出错误:No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response ha原创 2017-05-10 18:17:15 · 11025 阅读 · 0 评论 -
ElasticSearch——nested(mapping,query,aggregation)
ElasticSearch 包含nested字段类型,该类型的出现主要是由于对象数组类型的操作往往不能如我们预期,这主要是因为在Lucene内部没有对象的概念,所以ES将层级的JSON数据转化成扁平的键值对列表形式。例如文档:PUT my_index/my_type/5{ "owner" : "小李", "family" : [ { "call" : "dad原创 2017-05-09 17:07:24 · 2179 阅读 · 2 评论 -
Elasticsearch_安装配置(对应插件)
说明1) 素材来自互联网,针对部分插件,已通过实际操作验证,进而整理、总结形成。(感谢度娘、感谢互联网、感谢开源世界里的大牛)2) 如有谬误,请及时指出。(咸鱼翻身,Email:defineconst@163.com,会不断更新本文档)3) 联系本人获取配置好的Elasticsearch1.6.0集成安装包。4) 插件地址:http://www.se原创 2015-07-14 10:15:52 · 4111 阅读 · 1 评论 -
[Elasticsearch] 部分匹配 (一) - 前缀查询
部分匹配(Partial Matching)敏锐的读者可能已经发现到目前为止,介绍的查询都是在整个词条层面进行操作的。匹配的最小单元必须是一个词条。你只能找到存在于倒排索引(Inverted Index)中的词条。但是如果你想匹配词条的一部分,而不是整个词条呢?部分匹配(Partial Matching)允许用户指定词条的一部分然后找到含有该部分的任何单词。匹配词条一部分这翻译 2015-07-15 17:12:09 · 1330 阅读 · 0 评论 -
[Elasticsearch] 部分匹配 (二) - 通配符及正则表达式查询
通配符和正则表达式查询wildcard查询和prefix查询类似,也是一个基于词条的低级别查询。但是它能够让你指定一个模式(Pattern),而不是一个前缀(Prefix)。它使用标准的shell通配符:?用来匹配任意字符,*用来匹配零个或者多个字符。以下查询能够匹配包含W1F 7HW和W2F 8HW的文档:GET /my_index/address/_search翻译 2015-07-15 17:13:08 · 3924 阅读 · 0 评论 -
[Elasticsearch] 部分匹配 (三) - 查询期间的即时搜索
查询期间的即时搜索(Query-time Search-as-you-type)现在让我们来看看前缀匹配能够如何帮助全文搜索。用户已经习惯于在完成输入之前就看到搜索结果了 - 这被称为即时搜索(Instant Search, 或者Search-as-you-type)。这不仅让用户能够在更短的时间内看到搜索结果,也能够引导他们得到真实存在于我们的索引中的结果。比如,如果用户翻译 2015-07-15 17:14:04 · 1073 阅读 · 0 评论 -
[Elasticsearch] 部分匹配 (四) - 索引期间优化ngrams及索引期间的即时搜索
索引期间的优化(Index-time Optimizations)目前我们讨论的所有方案都是在查询期间的。它们不需要任何特殊的映射或者索引模式(Indexing Patterns);它们只是简单地工作在已经存在于索引中的数据之上。查询期间的灵活性是有代价的:搜索性能。有时,将这些代价放到查询之外的地方是有价值的。在一个实时的Web应用中,一个额外的100毫秒的延迟会难以承受翻译 2015-07-15 17:15:48 · 949 阅读 · 0 评论 -
[Elasticsearch] 控制相关度 (一) - 相关度分值计算背后的理论
控制相关度(Controlling Relevance)对于仅处理结构化数据(比如日期,数值和字符枚举值)的数据库,它们只需要检查一份文档(在关系数据库中是一行)是否匹配查询即可。尽管布尔类型的YES|NO匹配也是全文搜索的一个必要组成,它们本身是不够的。我们还需要知道每份文档和查询之间的相关程度。全文搜索引擎不仅要找到匹配的文档,还需要根据相关度对它们进行排序。全翻译 2015-07-15 17:17:05 · 995 阅读 · 0 评论 -
[Elasticsearch] 控制相关度 (二) - Lucene中的PSF(Practical Scoring Function)与查询期间提升
Lucene中的Practical Scoring Function对于多词条查询(Multiterm Queries),Lucene使用的是布尔模型(Boolean Model),TF/IDF以及向量空间模型(Vector Space Model)来将它们结合在一起,用来收集匹配的文档和对它们进行分值计算。像下面这样的多词条查询:GET /my_index翻译 2015-07-15 17:18:13 · 853 阅读 · 0 评论 -
[Elasticsearch] 控制相关度 (三) - 通过查询结构调整相关度以及boosting查询
通过查询结构调整相关度ES提供的查询DSL是相当灵活的。你可以通过将单独的查询子句在查询层次中上下移动来让它更重要/更不重要。比如,下面的查询:quick OR brown OR red OR fox我们可以使用一个bool查询,对所有词条一视同仁:GET /_search{ "query": { "bool": { "sh翻译 2015-07-15 17:19:31 · 675 阅读 · 0 评论 -
[Elasticsearch] 控制相关度 (四) - 忽略TF/IDF
忽略TF/IDF有时我们不需要TF/IDF。我们想知道的只是一个特定的单词是否出现在了字段中。比如我们正在搜索度假酒店,希望它拥有的卖点越多越好:WiFi花园(Garden)泳池(Pool)而关于度假酒店的文档类似下面这样:{ "description": "A delightful four-bedroomed house with ... " }翻译 2015-07-15 17:20:27 · 1692 阅读 · 0 评论 -
[Elasticsearch] 控制相关度 (五) - function_score查询及field_value_factor,boost_mode,max_mode参数
function_score查询function_score查询是处理分值计算过程的终极工具。它让你能够对所有匹配了主查询的每份文档调用一个函数来调整甚至是完全替换原来的_score。实际上,你可以通过设置过滤器来将查询得到的结果分成若干个子集,然后对每个子集使用不同的函数。这样你就能够同时得益于:高效的分值计算以及可缓存的过滤器。它拥有几种预先定义好了的函数:翻译 2015-07-15 17:23:49 · 865 阅读 · 0 评论 -
[Elasticsearch] 控制相关度 (六) - function_score查询中的filter,functions及random_score参数
根据过滤子集来提升(Boosting Filtered Subsets)回到在忽略TF/IDF(Ignoring TF/IDF)中处理的那个问题,我们需要根据每个度假酒店拥有的卖点数量来对它们的相关度分值进行计算。我们希望利用缓存的过滤器来影响分值,而function_score则正好可以实现该目标。在目前的例子中,我们为所有的文档都使用了一个函数。现在我们希望使用过滤器将翻译 2015-07-15 17:24:31 · 1943 阅读 · 0 评论 -
[Elasticsearch] 聚合中的重要概念 - Buckets(桶)及Metrics(指标) 1
高层概念(High-Level Concepts)和查询DSL一样,聚合(Aggregations)也拥有一种可组合(Composable)的语法:独立的功能单元可以被混合在一起来满足你的需求。这意味着需要学习的基本概念虽然不多,但是它们的组合方式是几近无穷的。为了掌握聚合,你只需要了解两个主要概念:Buckets(桶):满足某个条件的文档集合。Me翻译 2015-07-22 17:06:41 · 1017 阅读 · 0 评论 -
[Elasticsearch] 聚合的测试数据 2
聚合的测试数据(Aggregation Test-Drive)我们将学习各种聚合以及它们的语法,但是最好的学习方法还是通过例子。一旦你了解了如何思考聚合以及如何对它们进行合适的嵌套,那么语法本身是不难的。让我们从一个例子开始。我们会建立一个也许对汽车交易商有所用处的聚合。数据是关于汽车交易的:汽车型号,制造商,销售价格,销售时间以及一些其他的相关数据。首先,通过批量翻译 2015-07-22 17:07:44 · 1042 阅读 · 0 评论 -
[Elasticsearch] 聚合 - 时间数据处理(Looking at Time) 3
时间数据处理(Looking at Time)如果在ES中,搜索是最常见的行为,那么创建日期柱状图(Date Histogram)肯定是第二常见的。为什么要使用日期柱状图呢?想象在你的数据中有一个时间戳。数据是什么不重要-Apache日志事件,股票交易日期,棒球比赛时间-任何拥有时间戳的数据都能通过日期柱状图受益。当你有时间戳时,你经常会想创建基于时间的指标信息:翻译 2015-07-22 17:09:01 · 3302 阅读 · 0 评论 -
[Elasticsearch] 聚合作用域(Scoping Aggregations) 4
聚合作用域(Scoping Aggregations)到现在给出的聚合例子中,你可能已经发现了在搜索请求中我们省略了query子句。整个请求只是一个简单的聚合。聚合可以和搜索请求一起运行,但是你需要理解一个新概念:作用域(Scope)。默认情况下,聚合和查询使用相同的作用域。换句话说,聚合作于匹配了查询的文档集。让我们看看之前的一个聚合例子:GET /cars/tr翻译 2015-07-22 17:10:27 · 740 阅读 · 0 评论 -
[Elasticsearch] 过滤查询以及聚合(Filtering Queries and Aggregations) 5
过滤查询以及聚合A natural extension to aggregation scoping is filtering. Because the aggregation operates in the context of the query scope, any filter applied to the query will also apply to the aggr翻译 2015-07-22 17:11:45 · 1700 阅读 · 0 评论 -
[ElasticSearch] 空间搜索 (一)
根据索引文档的地理坐标来进行搜索,Elasticsearch 也能够处理这样的搜索。——空间搜索一、为空间搜索准备映射PUT my_space_test{ "mappings": { "poi": { "properties": { "name": { "type": "string" }, "l原创 2015-08-12 17:17:33 · 8089 阅读 · 3 评论 -
[ElasticSearch] 空间搜索 (二)
空间搜索在聚合中的使用直接上代码: "aggs": { "aggs_geopoint": { "geo_distance": { "field": "location", "origin": { "lat": 51.5072222, "lon": -0.1275 },原创 2015-08-26 15:32:12 · 3645 阅读 · 3 评论 -
[ElasticsSearch] geohash (一)
先转载,再了解,再总结http://blog.jobbole.com/80633/ 提供了在地图上显示geohash编码的功能在上次写了文章《在GAE之中使用基于地理位置的查询》,之后,我一直在奇怪geohash实现周边查询的原理是什么,毕竟地理数据可是二维的坐标,而geohash的结果只是一个简单的字符串,要说通过简单字符串的比较就能找到周边的点,无论如何原创 2015-08-26 17:16:53 · 2286 阅读 · 0 评论 -
[ElasticsSearch] 排序(一)
排序是定义在字段级别的,可以通过定义根据特定字段的内容来规定排序规则{ "sort" : [ { "post_date" : {"order" : "asc"}}, ------定义在字段级别排序的多种方式 "user", { "name" : "desc" }, { "age" : "desc" },原创 2015-08-31 14:14:16 · 2290 阅读 · 2 评论 -
[Elasticsearch] 数据建模 - 处理关联关系(1)
数据建模(Modeling Your Data)ES是一头不同寻常的野兽,尤其是当你来自SQL的世界时。它拥有很多优势:性能,可扩展性,准实时的搜索,以及对大数据的分析能力。并且,它很容易上手!只需要下载就能够开始使用它了。但是它也不是魔法。为了更好的利用ES,你需要了解它从而让它能够满足你的需求。在ES中,处理实体之间的关系并不像关系型存储那样明显。在关系数据库中的黄金准转载 2015-08-31 14:19:51 · 1079 阅读 · 2 评论 -
[Elasticsearch] 数据建模 - 处理关联关系(2)
字段折叠(Field Collapsing)一个常见的需求是通过对某个特定的字段分组来展现搜索结果。我们或许希望通过对用户名分组来返回最相关的博文。对用户名分组意味着我们需要使用到terms聚合。为了对用户的全名进行分组,name字段需要有not_analyzed的原始值,如聚合和分析中解释的那样。PUT /my_index/_mapping/blogpost{ "propert转载 2015-08-31 14:22:19 · 1253 阅读 · 0 评论 -
ElasticsSearch——Query String
之前一直觉的QueryString这种查询方式挺好用的,用它的主要场合就是对同一个词针对多字段可以查询,这好像是其他方式所不支持的。今天一个Bug 出来才发现,原来还有很多不了解的地方。queryString 是能够自动解析查询的字符串的,而且其中还可以使用正则表达式。既方便,但是对于不用这个功能的我,就显得尤为没有必要,因为我的字符串如果包含了他已经实现定义有特定意义的字符,就会报错,因为他原创 2015-11-25 10:49:50 · 1825 阅读 · 0 评论 -
ELaticSearch——PlainElastic.net.dll 中的JsonNetSerializer
之前为了尽量减少对ES类库的使用,对于ES查询返回的结果,直接使用NewtonJson的json转化器,结果最后发现搜索结果的Json中有聚合的结果,但是转化成SearchResult 就怎么也看不到FacetResult部分。因此,寻寻觅觅终于找到原因所在,不过令人头疼的是PlainElastic.net.dll 最新的将facet标注为过期, [Obsolete("Fac原创 2015-12-01 17:26:53 · 2067 阅读 · 0 评论 -
ElasticSearch——2.X总结
1. ES2.X plugin1、rivers所有的rivers都在2.x版本总不再支持,所以mongoDB的数据同步无法再通过rivers进行同步。https://www.elastic.co/blog/deprecating-rivers根据官方的文档显示,解决的办法一是通过已有的各客户端软件(如elasticsearc-net)进行迁移。【当然这里肯定速度肯定会比较慢,可以原创 2016-02-01 11:31:52 · 7928 阅读 · 1 评论 -
ElasticSearch——数据安全
ELK(ElasticSearch logstash kibana)系统默认并不含有用户认证功能,基本上任何人都可以随意读写ElasticSearch的API并获取数据,这时该如何对ELK系统做好防护工作呢?可以使用shield 保护ES平台并兼权限控制那么shield 是什么呢?Shield是Elastic公司为ElasticSearch开发的一个安全插件。在安装原创 2016-02-16 17:55:48 · 5213 阅读 · 1 评论 -
ElasticSearch——安全 Search Guard
安全——免费插件 Search GuardSearch Guard 简介Search Guard是一个Elasticsearch的AAA plugin,特性包括:权限控制粒度可以到indices, types,甚至可以到过滤field层次。也可以限制用户行为,read, write, admin;提供多种HTTP认证方式,包括Basic, Proxy header, SPNEGO/原创 2016-02-25 19:31:37 · 6331 阅读 · 2 评论 -
ElasticsSearch——部署环境(JDK)
最近在做ES部署,却发现相同的ES安装包,在不同的服务器上有的可以跑,有的不可以跑出现的错误,如下所示:来自于ES启动日志说是不支持安装的几个分词器插件,但是之前命名在这个服务器的环境中是可以跑通的,只不过最近对分词器插件加载词库进行自定义,通过配置文件读取数据库中的词条来作为分词的词库。难道是这个原因,一看能跑通的服务器上的JDK版本是:jdk-8u51-wind原创 2016-03-02 15:09:25 · 1454 阅读 · 0 评论 -
ElasticSearch——setting部分不存储某个字段
setting中的通用属性Store该属性的取值可以为yes和no,用于指定字段的原始属性是否存入索引。默认值是no.意味着不能在结果中返回字段的原始值(即使没有存储原始值,也可以使用Soure字段返回原始值)。如果已经建立索引可以搜索该字段的内容。ElasticSearch默认是存储整个文件的,如果要改变这种情形的话可以设置:“_source”:{"enable":"false"}P原创 2016-03-04 17:29:45 · 8151 阅读 · 1 评论 -
ElasticSearch——自定义排序
GET _search{ "_source": { "include": ["title.Value","dataType","_score"] }, "query": { "bool": { "should": [ { "query_string": { "default_field": "t原创 2016-03-09 18:28:30 · 27359 阅读 · 3 评论 -
Elasticsearch 2.2.0 插件篇:插件清单
原文链接:http://my.oschina.net/secisland/blog/636213?fromerr=1lO0Yxc3在Elasticsearch中非常多的插件,这些插件主要分成以下几类:API插件,报警插件,分析插件,发现插件,管理和站点插件,映射器插件,脚本插件,安全插件,快照/恢复插件,传输插件。有很多新版本都不支持,本文介绍的插件基本都可以在新版本上使用。转载 2016-04-12 13:41:51 · 2381 阅读 · 0 评论 -
ElasticSearch——Java 内存溢出
Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结java.lang.OutOfMemoryError这个错误我相信大部分开发人员都有遇到过,产生该错误的原因大都出于以下原因:JVM内存过小、程序不严密,产生了过多的垃圾。导致OutOfMemoryError异常的常见原因有以下几种:内存中加载的数据量过于庞大,如一次从数据库取转载 2016-04-27 17:41:45 · 14790 阅读 · 0 评论 -
ElasticSearch——ELK
logstash日志分析的配置和使用 logstash是一个数据分析软件,主要目的是分析log日志。整一套软件可以当作一个MVC模型,logstash是controller层,Elasticsearch是一个model层,kibana是view层。 首先将数据传给logstash,它将数据进行过滤和格式化(转成JSON格式),然后传给Elastics转载 2016-05-26 10:03:19 · 1270 阅读 · 3 评论 -
Elasticsearch ——ELK安装
Kibana+Logstash+Elasticsearch 日志查询系统目录(?)[+]https://www.loggly.com/日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有:根据关键字查询日志详情监控系统的运行状况统计分析,比如接口的调用次数、执行时间、成功率等异常数据自动触发消息通知转载 2016-05-26 10:11:51 · 1458 阅读 · 1 评论 -
ElasticsSearch——HighLights
ES可以使用三种类型的高亮:the lucene highlighter fast-vector-highlighter postings-highlighte高亮显示的前提要求:1.高亮的字段是存储的,store set to true 2.如果前提1不满足,会从source中提取,但是必须保证 source set to enable3._al原创 2016-06-02 15:46:05 · 993 阅读 · 1 评论 -
分词器——mmseg——分词算法
MMSEG是中文分词中一个常见的、基于词典的分词算法(作者主页:http://chtsai.org/index_tw.html),简单、效果相对较好。由于它的简易直观性,实现起来不是很复杂,运行速度也比较快。关于算法的原文,可以参 见:http://technology.chtsai.org/mmseg/总的来说现在的中文分词算法,大概可以笼统的分为两大类:一种基于词典的,一种是非基于转载 2016-06-12 11:52:12 · 849 阅读 · 2 评论 -
分词器——ik——分词算法
IK Analyzer 3.0特性 采用了特有的"正向迭代最细粒度切分算法",具有80万字/秒的高速处理能力采用了多子处理器分析模式,支持:英文字母(IP地址、Email、URL)、数字(日期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名、地名处理)等分词处理。优化的词典存储,更小的内存占用。支持用户词典扩展定义针对Lucene全文检索优化的查询分析器IKQuer转载 2016-06-12 11:53:59 · 7565 阅读 · 3 评论 -
ElasticSearch——常用网址
1. ES官方文档,可作为参考手册。https://www.elastic.co/guide/en/elasticsearch/reference/master/cat-master.html2..NET开发 使用APIhttps://github.com/Yegoroff/PlainElastic.Net3.Elasticsearch 权威指南http://learn原创 2016-06-24 10:24:20 · 2290 阅读 · 2 评论