
Elasitcsearch
文章平均质量分 86
筑梦之人
这个作者很懒,什么都没留下…
展开
-
Elasticsearch 缓存机制
1. 节点查询缓存(Node Query Cache)官方文档简介查询缓存负责缓存查询的结果。每个节点有一个查询缓存,由所有分片共享。缓存执行LRU回收策略:当缓存满时,将回收最近最少使用的数据,为新数据让路。无法查看正在缓存的内容。查询缓存只缓存在filter上下文中使用的查询。详细介绍缓存数据结构缓存分为两个级别,分别为Query和Segment,所以使用的数据结构是一个Map<Query, Map<Segment, DocIdSet>>,DocIdSet则使用的是B原创 2021-01-05 12:46:25 · 6225 阅读 · 0 评论 -
ElasticSearch Mapping学习—Mapping中的分词器使用方式
analyzer定义文本字段分词器,默认对索引和查询都是有效的。假设不使用任何分词器,创建索引并添加字段PUT blogPUT blog/_doc/1{ "title": "定义文本字段分词器,默认对索引和查询都是有效的。"}查看词条向量(term vectors),即分词结果:GET /blog/_termvectors/1{ "fields": ["title"]}发现默认是按照单个汉字分词的。所以,我们要根据实际情况,配置合适的分词器:PUT blog{原创 2020-11-24 11:36:30 · 2177 阅读 · 0 评论 -
ElasticSearch Mapping学习—ElasticSearch分词器
内置的分词器ES的内置分词器如下:分词器描述Standard AnalyzerES的标准分词器,主要用于英文分词Simple Analyzer简单分词器,按非英文字母进行分词,同时转化成小写字母Whitespace Analyzer空格分词器,按空格分词Stop Analyzer类似于Simple Analyzer,但是增加了停顿词功能Keyword Analyzer关键词分词器Pattern Analyzer正则分词器,支持停顿词La原创 2020-11-24 11:34:46 · 406 阅读 · 0 评论 -
Elasticsearch复合查询—function_score查询
function_score允许您修改通过查询检索的文档的分数。例如,如果一个分数函数的计算开销很大,并且它足以在一组经过筛选的文档上计算分数,那么这就很有用。要使用function_score,用户必须定义一个查询和一个或多个函数,这些函数为查询返回的每个文档计算一个新分数。function_score只能用于一个这样的函数:{ "query": { "function_score": { "query": { "match_all": {} }, "boost"原创 2020-11-19 14:37:20 · 1284 阅读 · 0 评论 -
Elasticsearch复合查询—dis_max查询
返回与一个或多个包装查询(称为查询子句或子句)匹配的文档。如果返回的文档与多个查询子句匹配,则该dis_max查询会为该文档分配来自所有匹配子句的最高相关性得分,再加上所有其他匹配子查询的平局打破增量。您可以使用dis_max来在以不同提升因子映射的字段中搜索术语。请求示例{ "query": { "dis_max": { "queries": [ { "term": { "title": "Quick pets" } }, { "term":原创 2020-11-19 14:36:01 · 2280 阅读 · 0 评论 -
Elasticsearch复合查询—constant_score查询
包装filter,返回的每个匹配文档相关性得分均等于boost参数值的。{ "query": { "constant_score": { "filter": { "term": { "user.id": "kimchy" } }, "boost": 1.2 } }}constant_score的参数filter: 你希望执行的Filter查询,每一个返回的文档都必须匹配这个查询,Filter查询不会计算相关度分数,为了提高原创 2020-11-19 14:35:06 · 3742 阅读 · 0 评论 -
Elasticsearch复合查询—boosting查询
返回匹配positive查询的文档,同时降低也匹配negative查询的文档的相关性得分。您可以使用boosting查询来降低某些文档的匹配度,而不必将它们从搜索结果中排除。查询示例{ "query": { "boosting": { "positive": { "term": { "text": "apple" } }, "negative": { "term": {原创 2020-11-19 14:34:20 · 867 阅读 · 0 评论 -
Elasticsearch复合查询—bool查询
匹配与其他查询的布尔组合匹配的文档的查询。bool查询映射到Lucene BooleanQuery。它是使用一个或多个布尔子句构建的,每个子句都有一个有类型的occurrence。occurrence的类型有:查询子句语句描述信息must匹配的文档必须满足的子句,并会用于计算分数filter匹配的文档必须满足的子句,但不会向must一样计算分数,分数被忽略,Filter子句在Filter上下文中运行,这意味着计分被忽略,并且子句被考虑用于缓存should匹配的文档可能原创 2020-11-19 14:33:10 · 827 阅读 · 0 评论 -
ElasticSearch读写底层原理及性能调优
ES写入/查询底层原理1. Elasticsearch写入数据流程客户端随机选择一个ES集群中的节点,发送POST/PUT请求,被选择的节点为协调节点(coordinating node)协调节点查询集群状态信息并计算路由,将请求发送到真正处理请求的节点(primary shard所在的节点)包含primary shard的节点处理写入请求,并将数据同步到包含replica shard的节点coordinating node收到包含primary shard的节点的响应信息,将最终原创 2020-08-27 17:51:29 · 2106 阅读 · 1 评论 -
Elasticsearch Mapping 学习笔记
简介Mapping就是ES数据字段的元数据,ES在创建索引的时候dynamic mapping会自动为不同的数据指定对应的 mapping , mapping 中包含了字段的类型、搜索方式(exact value或者full text)、分词器等。可以使用GET /index_name/_mappings查看一个索引的mapping。动态索引Dynamic mapping具有自动推导数据类型的能力,因为ES的mapping_type是有JSON分析器检测数据类型的,而JSON没有隐式类型转换(int-原创 2020-08-06 10:48:45 · 514 阅读 · 0 评论 -
_mget学习笔记
_mget可以全局范围内的所有索引中批量查询,使用方式为GET /_mget;也可以在指定索引下批量查询GET /<index>/_mget。基本用法如下:GET /_mget{ "docs": [ { "_index": "my-index", "_id": "1" }, { "_index": "my-index", "_id": "2" } ]}// 或者GET /my-index/_m原创 2020-08-06 10:46:38 · 528 阅读 · 0 评论