Elasticsearch
文章平均质量分 74
java编程小帅
学如逆水行舟,不进则退
展开
-
Elasticsearch——Geo-distance查询
在距某个geopoint的给定距离内匹配“geo_point”和“geo_shape”值。例如:假设以下文档已编制索引:PUT /my_locations{ "mappings": { "properties": { "pin": { "properties": { "location": { "type": "geo_point" } } } }原创 2021-11-15 20:03:44 · 2573 阅读 · 1 评论 -
Elasticsearch——Geo-bounding box query
匹配与边界框相交的geo_point和geo_shape。例子:假设以下文档已编制索引:PUT /my_locations{ "mappings": { "properties": { "pin": { "properties": { "location": { "type": "geo_point" } } } } }}PUT /my_loc原创 2021-10-21 19:45:20 · 959 阅读 · 0 评论 -
Elasticsearch——Match phrase prefix query
按提供的顺序返回包含所提供文本的单词的文档。所提供文本的最后一个term被视为前缀,匹配以该term开头的任何单词。例子:GET /_search{ "query": { "match_phrase_prefix": { "message": { "query": "quick brown f" } } }}以下搜索返回的文档包含message字段中以quick brown f开头的短语。此搜索将匹配quick brown原创 2021-10-19 19:58:18 · 761 阅读 · 0 评论 -
Elasticsearch——Match boolean prefix query
match_bool_prefix查询分析其输入并根据terms构造bool查询。每个term(最后一个除外)都用于term查询。最后一个term用于前缀查询。一个match_bool_prefix query 例子:GET /_search{ "query": { "match_bool_prefix" : { "message" : "quick brown f" } }}其中,analysis生成的terms 是quick、brown和f 类似..原创 2021-10-19 19:17:17 · 526 阅读 · 0 评论 -
Elasticsearch——Match query
返回与提供的text、number、date或boolean匹配的文档。匹配前会分析提供的文本。match查询是执行全文搜索的标准查询,包括模糊匹配选项。例如:GET /_search{ "query": { "match": { "message": { "query": "this is a test" } } }}match的Top-level参数<field>(必填,object)要搜索的字段。原创 2021-10-18 20:26:51 · 952 阅读 · 0 评论 -
Elasticsearch——Boolean query
它匹配与其他查询的布尔组合相匹配的文档的一种查询,。bool查询映射到Lucene BooleanQuery。它是使用一个或多个布尔子句构建的,每个子句都有一个类型化引用。事件类型为:must 子句(query)必须出现在匹配的文档中,并将对分数起作用。 filter 子句(query)必须出现在匹配的文档中。但是,查询的分数将被忽略。filter子句在fiter上下文中执行,这意味着忽略评分,并考虑缓存子句。 should 子句(query)应出现在匹原创 2021-10-18 19:51:47 · 637 阅读 · 0 评论 -
Elasticsearch——Query and filter context
相关性得分默认情况下,Elasticsearch根据相关性得分对匹配的搜索结果进行排序,相关性得分衡量每个文档与查询的匹配程度。相关性分数是一个正浮点数,在搜索API的_score元数据字段中返回。分数越高,文档就越相关。虽然每种查询类型可以不同地计算相关性分数,但分数计算还取决于查询子句是在query上下文中运行还是在filter上下文中运行。Query context在query上下文中,查询子句回答问题“此文档与此查询子句的匹配程度如何?”除了决定文档是否匹配外,查询子句还计算_sco原创 2021-10-12 20:11:35 · 181 阅读 · 0 评论 -
Elasticsearch——查询结果排序
允许我们在特定字段上添加一个或多个排序。每种分类也可以颠倒。排序是在每个字段级别定义的,具有特殊的字段名,用于_score按分数排序,以及_doc按索引顺序排序。假设以下索引映射:PUT /my-index-000001{ "mappings": { "properties": { "post_date": { "type": "date" }, "user": { "type": "keyword" }, "name"原创 2021-10-11 20:35:04 · 3021 阅读 · 0 评论 -
Elasticsearch——搜索多个数据流和索引
要搜索多个数据流和索引,请将它们作为逗号分隔的值添加到搜索API的请求路径中。以下请求搜索my-index-000001和my-index-000002索引。GET /my-index-000001,my-index-000002/_search{ "query": { "match": { "user.id": "kimchy" } }}我们还可以使用索引模式搜索多个数据流和索引。以下请求以my index-*索引模式为目标。该请求搜索群集中以my原创 2021-10-09 15:50:28 · 751 阅读 · 0 评论 -
Elasticsearch——从搜索中检索选定字段
默认情况下,搜索响应中的每个命中都包括document _source,这是在索引文档时提供的整个JSON对象。建议使用两种方法从搜索查询中检索选定字段: 使用 fields 选项提取索引映射中存在的字段的值 如果需要访问在索引时传递的原始数据,请使用_source选项 我们可以同时使用这两种方法,但首选fields选项,因为它同时参考文档数据和索引映射。在某些情况下,我们可能希望使用其他方法检索数据。The fields option要检索搜索响应中的特定字段,请使用fi.原创 2021-10-09 15:35:18 · 2782 阅读 · 0 评论 -
Elasticsearch——分页查询
默认情况下,搜索返回前10个匹配的命中率。要浏览更大的结果集,可以使用搜索API的from和size参数。from参数定义要跳过的点击数,默认为0。size参数是要返回的最大点击数。这两个参数一起定义了一页结果。GET /_search{ "from": 10, "size": 20, "query": { "match": { "user.id": "kimchy" } }}避免使用“from”和“size”一次翻页太深或请求太多结果。搜索请求通常原创 2021-09-27 20:24:37 · 2047 阅读 · 0 评论 -
Elasticsearch——Filter search results
可以使用两种方法筛选搜索结果:使用带有filter子句的boolean查询。搜索请求(search requests)对搜索命中(search hits)和聚合(aggregations)应用布尔过滤器(boolean filters)。 使用搜索API的post_filter参数。搜索请求仅对search hits应用post filters,而不是聚合。我们可以使用post filter根据更广泛的结果集计算聚合,然后进一步缩小结果范围。我们还可以在后期筛选后重新存储命中,以提高相关性并重新排序原创 2021-09-10 16:41:49 · 692 阅读 · 0 评论 -
Collapse search results
可以使用“collapse”参数根据字段值collapse搜索结果。collapse是通过每个collapse键仅选择排序靠前的文档来完成的。例如,以下搜索按user.id折叠(collapse)结果,并按http.response.bytes对其进行排序。GET my-index-000001/_search{ "query": { "match": { "message": "GET /search" } }, "collapse": { "f原创 2021-09-10 16:14:51 · 724 阅读 · 0 评论 -
ElasticSearch官方指南(一)——Elasticsearch是什么?
前言Elasticsearch是分布式搜索和分析引擎,是Elastic Stack的核心。Logstash和Beats有助于收集、聚合和丰富数据,并将其存储在Elasticsearch中。Kibana能够交互式地探索、可视化和共享对数据的见解,并管理和监视Stack。Elasticsearch为所有类型的数据提供近乎实时的搜索和分析。无论我们拥有结构化或非结构化文本、数字数据或地理空间数据,Elasticsearch都可以以支持快速搜索的方式高效地存储和索引这些数据。我们可以从简单的数据检索和聚合.原创 2021-04-22 18:31:44 · 276 阅读 · 1 评论 -
ElasticSearch官方指南(二)——快速下载使用Elasticsearch
前言准备好试用Elasticsearch了吗?让我们看看如何使用REST API去存储、搜索和分析数据!通过本篇文章,我们可以学到:启动并运行Elasticsearch群集 索引一些示例文档 使用Elasticsearch查询语言搜索文档 使用bucket和metrics聚合分析结果通过我的第一篇文章了解清楚Elasticsearch语言,理解Elasticsearch工作的基本原理。如果我们已经熟悉Elasticsearch,并且希望了解它如何与堆栈的其余部分一起工作,那么我们可能希望原创 2021-04-22 19:39:59 · 366 阅读 · 0 评论 -
ElasticSearch官方指南(三)——多个方法安装Elasticsearch
前言这里提供了官方支持的操作系统和JVM的列表:支持列表。Elasticsearch在列出的平台上进行了测试,但它也有可能在其他平台上工作。Elasticsearch是使用Java构建的,至少需要Java8才能运行。只支持Oracle的Java和OpenJDK。所有Elasticsearch节点和客户端上都应使用相同的JVM版本。我们建议安装Java1.8.0_131或更高版本在Java8发行系列中。我们建议使用受支持的LTS版本的Java。如果使用已知的坏版本Java,Elasticsear...原创 2021-04-23 10:16:04 · 2293 阅读 · 0 评论 -
Elasticsearch Windows安装报错问题及解决办法
背景因为学习Elasticsearch最新版本7.12.0,所以打算在本机安装,我的机器是windows环境,所以根据官网window步骤安装。可以根据ElasticSearch官方指南(三)——多个方法安装Elasticsearch我写的这篇文章安装。遇到的问题:因为我本机开发用的是jdk1.8 但是启动时截图可以看到,官方推荐我们用jdk11,而且后面还有个警告,由于JDK-8074459,MaxDirectMemorySize可能计算错误。所以我们需要使用新的jdk。...原创 2021-04-25 16:39:23 · 2350 阅读 · 1 评论 -
Elasticsearch配置文件介绍(1)——JVM选项和安全设置
目录配置文件配置文件位置配置文件格式环境变量替代群集和节点设置类型设置JVM选项安全设置可重新加载的安全设置审核安全设置一般审核设置审核事件设置本地节点信息设置审核日志文件事件忽略策略配置文件Elasticsearch提供了良好的默认值,只需要很少的配置。大多数设置都可以使用集群更新设置API在正在运行的集群上更改。配置文件应包含特定于节点的设置(如node.name和path),或节点加入群集所需的设置,如cluster.name和netwo原创 2021-04-27 21:38:58 · 2686 阅读 · 0 评论 -
Elasticsearch配置文件介绍(2)—— 群集级分片分配、路由设置及断路器设置
Circuit breaker settingsElasticsearch包含多个断路器,用于防止操作导致OutOfMemoryError。每个断路器指定它可以使用的内存量限制。此外,还有一个父级中断器,用于指定可跨所有中断器使用的内存总量。除非另有说明,否则可以使用集群更新设置API在活动集群上动态更新这些设置。父断路器父级断路器可配置以下设置:indices.breaker.total.use_real_memory(静态)确定父断路器应考虑实际内存使用情况(true)或者仅考.原创 2021-05-06 19:14:05 · 797 阅读 · 0 评论 -
Elasticsearch配置文件介绍(3)—— 跨群集复制设置、字段数据缓存设置和索引生命周期管理设置
跨群集复制设置可以使用群集更新设置API在活动群集上动态更新这些跨群集复制设置。远程恢复设置以下设置可用于对远程恢复期间传输的数据进行速率限制:ccr.indices.recovery.max_bytes_per_sec:限制每个节点上的入站和出站远程恢复通信总量。由于此限制适用于每个节点,但可能有许多节点同时执行远程恢复,因此远程恢复字节的总量可能远远高于此限制。如果我们将此限制设置得太高,则正在进行的远程恢复可能会消耗过多的带宽(或其他资源),从而使群集不稳定。此设置由引导簇和跟随.原创 2021-05-07 21:07:22 · 492 阅读 · 0 评论 -
Elasticsearch配置介绍(4)—— 索引管理、索引恢复和索引缓冲区设置
目录索引管理设置索引恢复设置恢复设置专家级对等恢复设置索引缓冲区设置索引管理设置可以使用以下群集设置启用或禁用索引管理功能。action.auto_create_index如果索引不存在,则自动创建索引并应用任何已配置的索引模板。默认为true。action.destructive_requires_name设置为true时,必须指定索引名称才能删除索引。不可能使用_all或使用通配符删除所有索引。cluster.indices.close.enable.原创 2021-05-07 21:47:00 · 1360 阅读 · 0 评论 -
Elasticsearch配置介绍(5)—— 许可证、本地网关和日志设置
目录许可证设置本地网关设置悬挂索引日志日志配置配置日志等级弃用日志记录JSON日志格式许可证设置我们可以在elasticsearch.yml文件中配置此授权设置。有关更多信息,请参阅许可证管理。xpack.license.self_generated.type设置为basic(默认)以启用基本的X-Pack功能。如果设置为trial,则自生成的许可证只允许在30天内访问x-pack的所有功能。如果需要,我们可以稍后将集群降级为basic许可证...原创 2021-05-08 15:28:23 · 1538 阅读 · 0 评论 -
Elasticsearch配置介绍(6)—— 机器学习和查询(Search)设置
目录机器学习设置通用的机器学习设置高级机器学习设置机器学习断路器设置查询(Search) 设置机器学习设置使用机器学习不需要配置任何设置。默认情况下启用。机器学习使用SSE4.2指令,因此它只在CPU支持SSE4.2的机器上工作。如果在旧硬件上运行Elasticsearch,则必须禁用机器学习(通过将xpack.ml.enabled设置为false)。通用的机器学习设置node.roles: [ ml ]将node.roles设置为包含 ml 以将节点标识为机器.原创 2021-05-11 20:07:51 · 1186 阅读 · 0 评论 -
Elasticsearch的启动方法和停止方法
目录启动Elasticsearch压缩包(.tar .gz)从命令行启动作为守护进程运行压缩包(.zip)用命令行运行Debian packages通过SysV init 运行Elasticsearch通过systemd运行ElasticsearchDocker图像MSI packages用命令行运行RPM包通过SysV init 运行Elasticsearch通过systemd运行Elasticsearch停止Elasticsea..原创 2021-05-11 21:06:56 · 17150 阅读 · 0 评论 -
Elasticsearch——Mapping映射
映射是定义文档及其包含的字段如何存储和索引的过程。每个文档都是字段的集合,每个字段都有自己的数据类型。映射数据时,创建一个映射定义,其中包含与文档相关的字段列表。映射定义还包括元数据字段,如\源字段,用于自定义如何处理文档的关联元数据。...原创 2021-05-27 19:40:47 · 565 阅读 · 0 评论 -
Elasticsearch——动态映射
Elasticsearch最重要的功能之一就是它会尽量避开我们的视线,让我们尽快开始探索你的数据。要为文档编制索引,不必首先创建索引、定义映射类型和定义字段 — 您只需为文档编制索引,索引、类型和字段将自动显示:...原创 2021-05-27 21:36:03 · 1635 阅读 · 0 评论 -
Elasticsearch字段类型
每个字段都有一个字段数据类型或字段类型。此类型指示字段包含的数据类型(如字符串或布尔值)及其预期用途。例如,可以将字符串索引到文本字段和关键字字段。但是,文本字段值将被分析以进行全文搜索,而关键字字符串则保留原样以进行过滤和排序。...原创 2021-06-09 21:19:54 · 1029 阅读 · 2 评论 -
Elasticsearch——日期范围聚合
专用于日期值的范围聚合。此聚合与常规范围聚合的主要区别在于,from和to值可以用日期数学表达式表示,还可以指定一种日期格式,通过该格式返回from和to响应字段。请注意,此聚合包括每个范围的from值,不包括to值。...原创 2021-06-10 19:08:34 · 1960 阅读 · 0 评论 -
Elasticsearch——聚合介绍
聚合框架帮助提供基于搜索查询的聚合数据。它基于称为聚合(aggregations)的简单构建块,可以组合这些构建块以构建复杂的数据摘要。聚合可以看作是在一组文档上构建分析信息的工作单元。执行的上下文定义了该文档集是什么(例如,在搜索请求的已执行查询/过滤器的上下文中执行顶级聚合)。...原创 2021-06-17 21:34:57 · 558 阅读 · 1 评论 -
Elasticsearch——Analysis概述
目录Text analysis什么时候配置 text analysis?文本分析概述TokenizationNormalization自定义文本分析(Customize text analysis)分析器结构字符过滤器分词器Token筛选器索引和搜索分析索引和搜索分析器如何协同工作何时使用其他搜索分析器索引分析模块充当分析器的可配置注册表,可用于将字符串字段转换为单个术语,这些术语包括:添加到倒排索引以使文档可搜索 由高级查询(如匹配查询)用原创 2021-06-23 20:38:25 · 575 阅读 · 0 评论 -
Elasticsearch——Scroll
目录Request先决条件描述路径参数查询参数Request bodySearch Scroll ApiInitialize the search scroll context检索所有相关文档Clear the scroll context可选参数同步执行异步执行Response完整的例子背景:因为在开发过程中有个拉取数据的需求,数据都存在es中,刚开始用了分页查询,但是超过10000数据量之后报错。所以需要学习滚轮查询来解决该问题。ES官原创 2021-07-12 20:36:25 · 1563 阅读 · 2 评论 -
Elasticsearch——Multi-search
目录Multi-Search Request可选参数同步执行异步执行MultiSearchResponse背景: 在工作中遇到需要多次查询es获取结果。本来是打算使用多线程做,但是发现ES提供了多个请求条件在一次请求里面发送出去。这样就方便了许多!multiSearch API是在单个http请求中并行执行多个搜索请求。Multi-Search RequestMultiSearchRequest是空的,我们可以将所有要执行的搜索添加到其中:MultiSearch原创 2021-08-10 20:03:25 · 2564 阅读 · 0 评论 -
Elasticsearch——Clear Scroll
滚动超时时,搜索滚动API使用的搜索上下文将自动删除。但建议使用Clear Scroll API在不再需要搜索上下文时尽快释放它们。Clear Scroll Request可以按如下方式创建ClearScrollRequest:ClearScrollRequest request = new ClearScrollRequest(); (1)request.addScrollId(scrollId); (2)(1)创建一个新的 Clea原创 2021-08-10 20:17:48 · 2161 阅读 · 1 评论 -
Elasticsearch——Arrays字段类型
在Elasticsearch中,没有专用的数组数据类型。默认情况下,任何字段都可以包含零个或多个值,但是,数组中的所有值必须是相同的数据类型。例如:an array of strings: ["one","two"] an array of integers: [1,2] an array of arrays: [1, [2,3]] which is the equivalent of [1,2,3] an array of objects: [{ "name": "...原创 2021-08-19 20:42:16 · 759 阅读 · 0 评论 -
Elasticsearch——Boolean字段类型
布尔字段接受JSON true和false值,但也可以接受解释为true或false的字符串: False values false,"false",""(empty string) True values true,"true" 例如:PUT my-index-000001{ "mappings": { "properties": { "is_published": { ...原创 2021-08-19 20:56:11 · 2333 阅读 · 0 评论 -
Elasticsearch-Date字段类型
JSON没有日期数据类型,因此Elasticsearch中的日期可以是:包含格式化日期的字符串,例如“2015-01-01”或“2015/01/01 12:10:30”。 表示自历元以来的毫秒数。 表示自历元(配置)起的秒数。注意:自历元起的毫秒值必须为非负。使用格式化日期表示1970年之前的日期。在内部,日期转换为UTC(如果指定了时区),并存储为表示自历元起毫秒数的长数字。日期查询在内部转换为此长表示形式的范围查询,聚合和存储字段的结果根据与字段关联的日期格式转换回字符串。注意:日原创 2021-08-21 11:28:08 · 1438 阅读 · 0 评论 -
Elasticsearch——Geopoint字段类型
geo_point类型的字段接受经纬度对,可以使用: 在边界框内、距离中心点一定距离内、多边形内或geo_shape查询内查找地质点的步骤。 按地理位置或距离中心点聚合文档。 将距离整合到文档的相关性得分中。 按距离对文档进行排序。 指定geopoint点有五种方式,如下所示:PUT my-index-000001{ "mappings": { "properties": { "location": { "type":原创 2021-08-21 12:01:40 · 2894 阅读 · 0 评论 -
Elasticsearch——Histogram字段类型
用于存储表示直方图的pre-aggregated数字数据的字段。此数据使用两个成对数组定义:由两个double组成的value数组,表示histogram的存储桶(buckets)。必须按升序提供这些值。 对应的integer numbers的counts数组,表示每个存储桶中有多少个值。这些数字必须为正或零。因为values数组中的元素对应于count数组中相同位置的元素,所以这两个数组必须具有相同的长度。注意:histogram 字段只能存储每个文档的一对值和计数数组。不支持嵌套(nes原创 2021-08-23 20:03:39 · 593 阅读 · 0 评论 -
Elasticsearch——Keyword字段类型
keyword family包括以下字段类型:keyword,用于结构化内容,如ID、电子邮件地址、主机名、状态码、邮政编码或标记。 constant_keyword始终包含相同值的keyword字段。 wildcard非结构化machine-generated内容,wildcard类型针对具有大值或高基数的字段进行了优化。keyword字段通常用于排序(sorting)、聚合(aggregations)和term-level查询,例如term。避免使用keyword字段进行全文搜索(...原创 2021-08-25 20:09:38 · 6072 阅读 · 0 评论 -
Elastisearch——Nested 字段类型
nested类型是object数据类型的一个专门版本,它允许对对象数组进行索引,以便它们可以相互独立地查询。当用大的任意键值集合键入键值对时,可以考虑将每个键值对建模为具有键和值字段的自己嵌套文档。相反,考虑使用扁平化数据类型,它将整个对象映射为单个字段,并允许对其内容进行简单搜索。嵌套文档和查询通常比较昂贵,因此在这个用例中使用扁平化数据类型是一个更好的选择。对象阵列的展平方式Elasticsearch没有内部对象的概念。因此,它将对象层次结构展平为字段名和值的简单列表。例如:PUT m原创 2021-08-30 20:22:17 · 513 阅读 · 0 评论