![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Elasticsearch
文章平均质量分 79
longasyan
技术是第一生产力,技术能给人带来快乐,能解决现实中有意义的问题,不管是什么语言,没有高低之分,自己喜欢就是最好的。我希望通过写文章进行技术分享,和大家一起畅游在技术的海洋中,共同进步
展开
-
ES-结构化搜索
结构化数据bool类型和数字都是结构化数据文本也可以是结构化数据,比如说ID,颜色,标签等ES中的结构化搜索bool,数字,时间,这种结构化的数据都有固定的格式,我们可以对其进行精确查询,范围查询,或者判断大小文本类型的结构化数据,我们可以对其进行精确查询和部分查询term query/prefix query结构化结果只有是或者否可以根据具体的场景进行设置是否需要打分机制例POST /products/_bulk{"index":{"_id":1}}{"p原创 2021-07-25 13:35:54 · 207 阅读 · 0 评论 -
ES-搜索的相关性算法
相关性和相关性算法相关性相关性算分描述了一个文档和查询语句匹配的程度,es会对每个匹配查询条件的结果进行算分打分的本质是排序,将相关性高的文档排在最前面。es现在采用的是BM 25的算分机制词频-term frequency-TF检索词在一篇文档中出现的频率算法:检索词的次数除以文档的总字数度量一条查询和结果文档相关性的简单方法:简单讲搜索中的每一个词的TF进行相加TF(区块链)+TF(的)+TF(应用)stop word过滤不必要的词进行算分比如TF(的)是原创 2021-07-25 13:33:15 · 6551 阅读 · 0 评论 -
ES-进阶-聚合
类似于 DSL 查询表达式,聚合也有 可组合 的语法:独立单元的功能可以被混合起来提供你需要的自定义行为。这意味着只需要学习很少的基本概念,就可以得到几乎无尽的组合。要掌握聚合,你只需要明白两个主要的概念:桶(Buckets)满足特定条件的文档的集合指标(Metrics)对桶内的文档进行统计计算这就是全部了!每个聚合都是一个或者多个桶和零个或者多个指标的组合。翻译成粗略的SQL语句来解释吧:桶在概念上类似于 SQL 的分组(GROUP BY),而指标则类似于COUNT()、SUM()...原创 2021-07-25 13:31:23 · 166 阅读 · 0 评论 -
es-进阶-深入搜索
1.结构化搜索结构化搜索(Structured search)是指有关探询那些具有内在结构数据的过程。比如日期、时间和数字都是结构化的:它们有精确的格式,我们可以对这些格式进行逻辑操作。比较常见的操作包括比较数字或时间的范围,或判定两个值的大小。文本也可以是结构化的。如彩色笔可以有离散的颜色集合:红(red)、绿(green)、蓝(blue)。一个博客可能被标记了关键词分布式(distributed)和搜索(search)。电商网站上的商品都有 UPCs(通用产品码 Unive...原创 2021-07-25 13:30:37 · 202 阅读 · 0 评论 -
ES-索引别名
在前面提到的,重建索引的问题是必须更新应用中的索引名称。 索引别名就是用来解决这个问题的!索引 别名 就像一个快捷方式或软连接,可以指向一个或多个索引,也可以给任何一个需要索引名的API来使用。别名 带给我们极大的灵活性,允许我们做下面这些:在运行的集群中可以无缝的从一个索引切换到另一个索引 给多个索引分组 (例如, last_three_months)给索引的一个子集创建 视图在后面我们会讨论更多关于别名的使用。现在,我们将解释怎样使用别名在零停机下从旧索引切换到新索引。有两种方式管理别原创 2021-07-25 13:29:48 · 1658 阅读 · 0 评论 -
ES-迁移数据-_reindex API
从twitter索引中迁移数据到new_twitter,直接是原模原样的数据进行转移POST _reindex{ "source": { "index": "twitter" }, "dest": { "index": "new_twitter" }}根据查询结果进行迁移数据并最多不超过100个文档POST _reindex { "max_docs": 100, "source": { ...原创 2021-07-25 13:28:23 · 147 阅读 · 0 评论 -
ES-基础知识之四
1.索引管理创建索引到目前为止, 我们已经通过索引一篇文档创建了一个新的索引 。这个索引采用的是默认的配置,新的字段通过动态映射的方式被添加到类型映射。现在我们需要对这个建立索引的过程做更多的控制:我们想要确保这个索引有数量适中的主分片,并且在我们索引任何数据 之前 ,分析器和映射已经被建立好。为了达到这个目的,我们需要手动创建索引,在请求体里面传入设置或类型映射,如下所示:PUT /my_index{ "settings": { ... any settings ... },..原创 2021-07-25 13:27:38 · 96 阅读 · 0 评论 -
ES-基础知识之三
1.映射和分析GET /megacorp_employee/_mapping //获取映射a.精确值VS全文精确值如它们听起来那样精确。例如日期或者用户 ID,但字符串也可以表示精确值,例如用户名或邮箱地址。对于精确值来讲,Foo和foo是不同的,2014和2014-09-15也是不同的另一方面,全文是指文本数据(通常以人类容易识别的语言书写),例如一个推文的内容或一封邮件的内容。b.倒排索引Elasticsearch 使用一种称为 倒排索引 的结构,它适用于...原创 2021-07-25 13:26:52 · 725 阅读 · 0 评论 -
ES-基础知识之二
1.分布式文档存储a.路由一个文档到一个分片当中算法:shard = hash(routing) % number_of_primary_shardsrouting是一个可变值,默认是文档的_id,也可以设置成一个自定义的值。routing通过 hash 函数生成一个数字,然后这个数字再除以number_of_primary_shards(主分片的数量)后得到余数。这个分布在0到number_of_primary_shards-1之间的余数,就是我们所寻求的文档所在分片...原创 2021-07-25 13:25:47 · 401 阅读 · 0 评论 -
ElasticSearch -elasticsearch.yml详细配置
配置项cluster.name: elasticsearch# 配置的集群名称,默认是elasticsearch,es服务会通过广播方式自动连接在同一网段下的es服务,通过多播方式进行通信,同一网段下可以有多个集群,通过集群名称这个属性来区分不同的集群。 node.name: Franz Kafka# 当前配置所在机器的节点名,你不设置就默认随机指定一个name列表中名字,该name列表在es的jar包中config文件夹里name.txt文件中,其中有很多作者添加的有趣名字。 nod原创 2021-07-24 09:13:33 · 969 阅读 · 0 评论 -
ES-映射
ES-动态映射深入讲解1.动态映射控制--可以通过mapping-dynamic这个属性进行控制是否允许动态映射dynamic:true|false|stricttrue:更新mapping,可以进行文档搜索,可以进行字段搜索,可以动态映射(es中dynamic的默认值)false:可以被搜索但是没有映射,也没有更新mapping,可以进行文档搜索,但是字段搜索不可以strict:以上都是否例://创建一个索引put dynamic_mapping_test/_doc/1{原创 2021-07-24 09:11:00 · 615 阅读 · 0 评论 -
ES-排序及Doc Values &FieldData
排序的过程排序是针对字段原始内容进行的,倒排索引无法发挥作用需要用到正排索引,通过文档Id和字段快速得到字段原始内容ES有两种实现方法feilddata:搜索时动态创建,使用大量内存和cpu,但是索引速度快doc values(列式存储 对text无效):新增文档时创建,占用存储空间,索引速度慢,但是减少了内存的占用默认开启,可以通过mapping进行关闭,关闭后该字段不可进行排序和聚合,但是搜索速度快,占用空间小,只有明确该字段不需要进行排序和聚合的时候才可以对该字段关闭doc v原创 2021-07-24 09:10:01 · 543 阅读 · 0 评论 -
ES-映射-自定义analyzer
系统分析器包含三个类型的分析器character filter :在tokenizer之前进行文本处理,包括过滤特殊字符替换字符,例如html标签过滤,正则匹配过滤tokenizer:将原始文本按照一定的规则切分成词 例如,whitespace/standard/uax_url_email/keyword/pattern/path_hierarchy(文件路径)tokenizer filter:将tokenizer分好的词进行增加,删除,修改,例如:lowercase/stop/s..原创 2021-07-24 09:09:07 · 553 阅读 · 0 评论 -
ES-Query&Filtering与多字符串多字段查询
Query Context & Filter Content高级搜索功能:支持多项文本输入,针对多个字段进行搜索搜索引擎一般也提供价格,时间等条件的过滤ES中有两种筛选的上下文query:有算分机制filter:无算分机制,利用缓存提高性能Bool 复合查询must:必须匹配should:选择性匹配must_not:必须不匹配 不算分filter必须匹配 但不算分单字符串多字段查询例:PUT blogs/_doc/1{ "title原创 2021-07-24 09:06:45 · 1177 阅读 · 0 评论 -
ES-基础
1.基础接口--初步了解ES//查询文档总数curl -XGET 'http://localhost:9200/_count?pretty' -d '{ "query": { "match_all": {} }}'//新增索引+一个文档PUT /megacorp_employee/_doc/1{ "first_name" : "John", "last_name" : "Smith", "age" : 25,原创 2021-07-24 09:07:51 · 168 阅读 · 0 评论