
ES
文章平均质量分 89
jacksonary
备忘录
展开
-
Spring Data ES阅读记录
1. Data的基本用法前面有很多内容和第二章的内容相同,这里省去了很多相似的东西。1.4 定义查询方法 repository定义了2种按名字派生出方法的策略:直接从方法名直接解析查询;手动定义查询;1.4.1 创建查询 Spring Data reppository支持直接按名字解析,但是起的方法名要按照一定的规则来取,解析的时候会剥离以下的套词,然后对剩下的部分进行解析,查询...原创 2018-09-19 08:32:04 · 1473 阅读 · 1 评论 -
SpringBoot整合ES的三种方式(API、REST Client、Data-ES)
1. 整合案例一(使用Java API) 这种方式,官方已经明确表示在ES 7.0版本中将弃用TransportClient客户端,且在8.0版本中完全移除它,我在学习ES时,版本已经是6.4.0了。版本搭配:SpringBoot 2.0.5,ES 5.5.01.1 依赖如下:<?xml version="1.0" encoding="UTF-8原创 2018-09-16 21:02:56 · 92208 阅读 · 7 评论 -
Head插件的使用
相应的Head插件,chrome和fire fox都支持,head for chrome,安装完即可查看集群信息,比如下面的:对上图中标记对必要说明:节点带星号的为集群主节点,带圈的为从节点,这点和Kibana一样,从我三个节点的名字也可以很容易辨别出来;ES 当前版本 6.4 碎片数量默认为5(后面会改成1),Head中呈现的是每个索引为一列,该列中0-4就是对应索引下的5个碎片标记,...原创 2018-10-08 08:09:41 · 1202 阅读 · 0 评论 -
ES常用操作记录
1. 创建索引[PUT] -> ip:9200/index_name,请求体:{ "settings": { "analysis": { "filter": { "remote_synonym": { "type": "dynamic_synonym", "synonyms_path": "http://xxx.oss-cn-beijing.ali...原创 2019-09-12 18:20:26 · 2271 阅读 · 0 评论 -
ES学习记录1——ES基本配置
Elasticsearch简称ES,官网对它的介绍是 The Heart of the Elastic Stack. Elasticsearch is a distributed, RESTful search and analytics engine capable of solving a growing number of use cases. As the heart of th...原创 2018-09-01 18:02:13 · 10589 阅读 · 0 评论 -
ES学习记录2——ES核心概念和基本操作
2. Elasticsearch基本核心概念 Elasticsearch中具备一些基本的概念,做如下描述:Near Realtime(NRT):ES是几乎是一个实时查询平台,从索引文档到可搜索文档有一点延迟,通常是1秒;Cluster:集群是一个或多个节点(服务器)的集合,它们共同保存整个数据,并提供跨所有节点的联合索引和搜索功能,一般一个集群唯一的名字作标识符(默认是"elatsicse...原创 2018-09-27 19:25:16 · 966 阅读 · 0 评论 -
ES学习记录3——ES中Search接口
5. 搜索 ES提供了2中搜索方式:REST风格的请求URI,直接将参数带过去;封装到request body中,这种方式可以定义更加易读的JSON格式; 通过REST风格URI搜索的案例如下:curl -X GET "localhost:9200/bank/_search?q=*&sort=account_number:asc&pretty"原创 2018-09-27 19:25:36 · 9976 阅读 · 0 评论 -
ES学习记录4——ES中的过滤和聚合
6. 过滤 之前忽略了在搜索返回结果中的hits._score和max_score参数,其实都是指文档与指定的搜索查询匹配程度的相对度量,score越高,匹配度越高。但查询并不总是需要产生分数,特别是当它们仅用于“过滤”文档集时,Elasticsearch会检测这些情况并自动优化查询执行,以便不计算无用的分数。bool搜索和range搜索都支持过滤操作,如(在bool内部):// 过滤得到20...原创 2018-09-27 19:25:53 · 7709 阅读 · 0 评论 -
ES学习记录5——ES接口规约
8. ES API规约8.1 多索引 通常可以用test1、test2、test3这样的形式(或者用_all表示所有索引),当然它也支持通配符(如:test*、*test或者te*t),排除某些索引可以用-符号,比如test*,-test3(匹配所有的test开头的索引但不包括test3),所有的多索引API都支持下面的url查询字符串参数:ignore_unavailable:如果指定索...原创 2018-09-28 07:55:00 · 2517 阅读 · 0 评论 -
ES学习记录6——ES的数据复制模型(单处理接口)
9. 数据复制模型 单处理和批处理操作主要围绕数据复制模型来理解,具体接口如下:单文档处理接口:Index接口;Get接口;Delete接口;Update接口;多文档处理接口:Multi Get接口;批处理接口;Delete By Query API;Update By Query API;Reindex API; 每个ES索引都被分割为碎片shards,...原创 2018-09-28 07:55:22 · 2652 阅读 · 1 评论 -
ES学习记录7——ES的数据复制模型(批处理接口)
9.2 批处理接口9.2.1 Multi Get接口 Multi Get允许基于索引、类型以及ID获取多个文档,响应具有一个docs数组,其中所有获取的文档按顺序对应于原始的multi-get请求,如果多个get请求中存在个别get失败了,那么doc数组中用含有这些错误的对象来代替原本应该是文档的位置。下面是多get请求的案例:GET /_mget{ "docs" : [ ...原创 2018-09-28 07:55:40 · 1461 阅读 · 0 评论 -
ES学习记录8——ES的Search接口2
10. Search 接口 大多数搜索API都是多索引、多类型,但 Explain 接口端点除外。路由 当执行搜时,它将广播给所有的索引(在复制品之间循环)。哪些碎片可以被搜索是由提供的routing参数控制的,比如,下面的路由值就是直接使用用户的名字:POST /search/tweet?routing=kimchy{ "user" : "kimchy", "postD...原创 2018-09-28 07:55:55 · 1339 阅读 · 0 评论 -
ES学习记录9——关于Term
9.2.4 Term Vector 返回一个特定文档的信息和字段的统计信息,这里的文档可以索引中存储的文档,也可以是用户手动提供的,Term vector默认是实时的(而不是接近实时),这可以通过realtime=false进行更改,下面是个小栗子:GET /twitter/_doc/1/_termvectors// 也可以使用url中的参数指定为检索信息的字段GET /twitter/...原创 2018-09-29 08:20:01 · 2038 阅读 · 0 评论 -
ES学习记录9.1--请求体搜索--Rescoring
Rescoring再评分机制通过将query和post_filter关键词返回来的前一部分文档数据(比如前100-500个文档)进行重新排序可以提高精确度,这个过程中使用的是次要算法(通常次要算法耗费的资源会更多),所以只是将它用于前部分文档的再排序行为中,而不是应用于索引中所有的文档排序中。 再评分rescore请求会在每个碎片返回由处理整个搜索请求的节点排序后的结果返回之前执行,目前res...原创 2018-11-13 20:52:33 · 648 阅读 · 0 评论 -
ES学习记录9.2——请求体搜索(Search Type和Scroll)
9.1 搜索类型(Search Type) ES执行分布式搜索时可以执行不同的执行路径,分布式搜索需要将搜分散到所有相关的碎片shards,然后收集所有结果。在执行分散/聚集类型操作时,有几种方法可以执行此操作,特别是使用搜索引擎。当执行分布式搜索时,有一个问题是从每个分片上搜索多少结果,例如,如果我们有10个分片,则第一个分片可能保持从0到10的最相关结果,其他分片结果排在其下方,因此,当执行...原创 2018-11-13 20:53:16 · 1351 阅读 · 1 评论 -
ES学习记录9.3——请求体搜索(得分说明Explain、版本、索引激励、不及格文档、命名查询、内部命中)
1. 开启打分说明(Explain) 在搜索时,可以开启评分说明"explain": true,请求响应中每个命中的文档会额外返回一个得分说明字段_explanation,如:curl -X GET "localhost:9200/_search" -H 'Content-Type: application/json' -d'{ "explain": true, "query...原创 2018-11-15 19:03:19 · 2664 阅读 · 0 评论 -
ES学习记录9.4——请求体搜索(字段折叠Filed Collapsing和搜索后Search After)
1. 字段折叠 ES允许基于字段值折叠搜索结果,ES仅对排序后文档的顶部文档执行成折叠操作,比如从每个推特用户获取它们最好的推文并通过其他用户的点赞数进行排序(升序):// 创建索引,这里一定要将user字段的类型设置为keyword或numericcurl -X PUT "localhost:9200/twitter" -H 'Content-Type: application/json'...原创 2018-11-16 18:51:26 · 2376 阅读 · 1 评论 -
ES学习记录10——ES分析器1
1. 概述2. 分析器的本质3. 分析器简易实操4. 分析器Analyzers4.1 配置内置的分析器4.1.1 标准分析器(Standard Analyzer)4.1.2 简易分析器(Simple Analyzer)4.1.3 空格分析器(Whitespace Analyzer)4.1.4 段词分析器(Stop Analyzer)4.1.5 关键词分析器(Keyword...原创 2018-11-07 20:45:05 · 2042 阅读 · 0 评论 -
ES学习记录10.1——ES分析器2(标记生成器)
tokenizer(标记生成器)接受字符流,负责将它们分割为独立的标记tokens(通常是一个个独立的单词),最后将这些tokens输出。比如空格标记生成器whitespace在分割文本时,只要遇到空格就会执行分割,比如whitespace标记生成器会将文本Quick brown fox!将分割为[Quick, brown, fox!]。标记生成器tokenizer除了分割字符流外,还负责记录每...原创 2018-11-09 19:24:59 · 1502 阅读 · 0 评论 -
ES学习记录10.2——ES分析器3(标记过滤器)
作为分析器三大组成部分的另一部分,标记过滤器(token filters)是非必要的。token filters从标记生成器tokenizer那里接受标记输入流,可以用来修改(如将术语转成小写)、删除(如移除段词)或添加(如同义词)token。ES提供给了很多内置的标记过滤器,这些标记过滤器可以在自定义的分析器中使用。1. 标准标记过滤器(Standard Token Filter) sta...原创 2018-11-09 19:26:03 · 4041 阅读 · 0 评论 -
ES学习记录10.3——ES分析器4(字符过滤器)
字符过滤器(Character filters)用于在将字符流传递给标记生成器Tokenizer之前对其进行预处理,它负责将最原始的文本作为字符流进行接受,可以对通过添加、移除或改变字符的方式改变流。比如一个字符过滤器可以用来转换印度-阿拉伯数字٠١٢٣٤٥٦٧٨٩变成等价的阿拉伯语数字0123456789,或者从流中删除<b>这样的HTML元素。ES有很多内置的字符过滤器,可以...原创 2018-11-09 19:26:40 · 2090 阅读 · 0 评论 -
ES学习记录10.4--ES分析器(中文分词IK)
1. 安装IK在github上的工程IK Analysis for Elasticsearch,安装IK分词器(进入ES的bin目录),以目前学习的版本6.4为例:elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.4.0/elasticsear...原创 2018-11-12 20:20:56 · 1695 阅读 · 1 评论 -
ES学习记录11——搜索模板(Search Template)
1. 搜索模板 /_search/template端点允许使用mustache language(继承ES沙箱脚本语言的一种语言,是护胡言乱语吗……)为每个呈现搜索请求,在执行前和用模板参数填充现有的模板:curl -X GET "localhost:9200/_search/template" -H 'Content-Type: application/json' -d'{ "so...原创 2018-11-19 19:30:09 · 7678 阅读 · 2 评论 -
ES学习记录12——推荐器(Suggester)
Suggester(翻译成建议器有点绰,不过很好理解),suggest的特性通过使用建议器suggester推荐给用户正在查找的术语提供基于文本的相似术语term,当前版本的推荐术语的功能还在开发中,并不是齐全的。其实简单的说就是各个搜索引擎提供的自动补全的功能,在搜索框中输入部分搜索词时,下面就有相关推荐的搜索词,上述推荐搜索的动作就是Suggester的工作,类似于利用百度搜索时输入搜索词下...翻译 2019-03-21 19:32:55 · 1914 阅读 · 0 评论 -
ES学习记录12.1——术语推荐器(Term suggester)
term推荐器会基于编辑的距离推荐术语(这翻译的简直丧心病狂啊,其实就是基于已输入的文本进行term的推荐),可能说联想搜索词更好理解点,term推荐器是基于Levenstein edit distance算法推荐术语的,提供的推荐文本是在术语推荐之前就被分析的。term推荐器并不会将上述请求中的查询部分考虑其中。term推荐器的常规选项有:text:表示建议文本,必选参数,可以设置为全局参...翻译 2019-03-21 19:35:37 · 1109 阅读 · 0 评论 -
ES学习记录12.2——短语推荐器(Phrase Suggester)
term推荐器提供了很方便的API基于特定字符串距离去获取可选的建议词,这些API允许单独从这些流中获取标记,然而,通常需要预先选择的推荐以呈现给最终用户,phrase推荐器在term推荐器的基础上添加额外的逻辑去选择完全修正的短语而不是基于ngram-language模式的单独地修正标记,实际上这些推荐器将能够基于共生和频率选出更好的标记。 总的来说,phrase推荐器需要先前做过映射配置(...翻译 2019-03-22 14:12:18 · 2006 阅读 · 1 评论 -
ES学习记录17——关于评分
ES评分这一块主要依靠function_score,它可以改变查询返回文档的分数。通常计算得分代价比较大,它可以对已经过滤的文档进行评分。function_score中需要定义一个 query 以及一个或多个计算查询的得到文档得分的函数。只有一个计算得分函数的示例如下:GET localhost:9200/index-name/_search?pretty{ "query": { ...原创 2019-12-18 20:54:41 · 889 阅读 · 0 评论