问题标签 [elasticsearch-7]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
48 浏览

elasticsearch - ElasticSearch:嵌套查询未返回所需结果

我是 Elastic Search 的新手,在实现一些查询时遇到了一些问题。以下是我的索引结构

以下是样本数据

我想查询message.dbhistogramwhere 中的数据histogramName : controller.pool.ConnectionCreation。与dbhistogramJson 对象数组一样,我的目的是仅从数组中检索该对象,该对象通过上述过滤器。

我尝试了以下两个查询:

查询 1

查询 2

我的期望

现实

请建议,我做错了什么?

0 投票
1 回答
175 浏览

elasticsearch - 是否在 simple_query_string 中使用模糊性禁用前缀搜索

当在同一个单词上使用simple_query_string前缀运算符* 模糊值~N时,前缀搜索似乎被禁用。

很明显,每当您将模糊度设置为 0 并且查询变为时,前缀都会被禁用,Abcd*~0然后就没有前缀搜索也没有模糊性。

文档中没有提到这一点,所以我不确定我是否做错了。

我试过了:

  • 交换运算符顺序:Abcd~2*-- 在_explain这引入了模糊变化,但省略了前缀运算符
  • 使用括号作为优先级:(Abcd*)~2-- 在_explain此使用前缀但省略了模糊运算符1
  • 复制这个词:(Abcd* Abcd~2)——这行得通,它显然显示了两个查询的重聚,而不是两个效果的组合2

1我假设在这种情况下~2不应将其解释为 SLOP 运算符,因为没有短语(没有引号)。

2我可以理解,合成这些效果可能会产生太多可能的变体——模糊添加 50 个变体,然后对每个变体进行前缀搜索,即

0 投票
1 回答
75 浏览

java - 获取所有记录,包括特定字段

我正在使用 Elasticcsearch 7.3。我只想从我的索引中使用 JAVA Api 获取所有文档的两条记录。我正在使用以下代码,但它返回空对象。

我只需要在结果中包含两个字段recipe_IDrecipe_url

0 投票
1 回答
35 浏览

elasticsearch - ElasticSearch:存在模板时将文档插入 ElasticSearch 索引的奇怪问题

我正在尝试在 ElasticSearch 中进行一些测试。我能够根据需要填充所有内容,但是每当我尝试放置项目的默认模板然后插入时,数据不会被摄取到索引中(尽管 http 调用是成功的)。

经过检查,我意识到即使使用 elasticSearch 的默认模板,我也无法插入一个简单的文档。例如插入 ES 文档中的模板:

然后index = "bark"通过

在索引中添加一个文档,但没有关于host_name. 只需将索引名称更改为该模板不适用的名称(例如index = dark),就会添加一个包含host_name. 显示复制的索引数据:

(当index=bark

(当index=dark

请注意_source":{"host_name":"generic_name"}前者中没有该字段?

为此可以做些什么?如果有人遇到此问题或知道解决方法,请提供帮助。

0 投票
0 回答
282 浏览

php - 了解 Elasticsearch 配置文件 API 输出

我已经索引了 200 万个文档,并且我试图一次返回所有匹配的文档 ID。我使用 PHP 客户端。

我的映射如下:

我的查询字符串如下:

我的个人资料 API 输出如下:

目标是一次获取所有匹配的文档。我只需要文档 ID(检查给定术语是否存在于文档中)所以我使用 index_options 作为文档。我了解滚动 API,但我想使用 max_result_window。我只使用一个分片,没有副本,并且在执行搜索操作时也避免了对文档进行评分。

我的问题如下:

  1. 我只想检索文档 ID 并避免文档获取阶段,所以我禁用了源字段。为了避免其他元数据,我按照此链接尝试了 "stored_fields": " none ", "docvalue_fields": ["_id"] 以避免获取阶段。但我仍然可以看到文档类型和索引名称。我需要做些什么来仅获取文档 ID 并避免获取阶段吗?

  2. 由于我正在检索所有匹配的文档评分与我无关,所以我使用了过滤器子句,但我想知道为什么我在下面的配置文件 API 结果中得到 boostquery 时间?但你也可以注意到,布尔查询得分时间为零!

  3. 为了知道布尔查询搜索仅在 Lucene 索引上花费了多少时间,我应该只花布尔查询报告的时间,还是需要将其所有子项(术语查询)时间相加?因为当我添加所有这些术语查询时间时,它高于布尔查询报告的时间。这有什么可能的原因吗?

  4. 我是否还需要为我的布尔查询计时包括收集器,因为在配置文件 api 中,据说“Lucene 通过定义一个“收集器”来工作,该收集器负责协调匹配文档的遍历、评分和收集。“。它还说“需要注意的是,收集器时间独立于查询时间。它们是独立计算、组合和标准化的!由于 Lucene 执行的性质,不可能将收集器中的时间“合并”到查询部分,因此它们显示在单独的部分中”。据我了解,它有助于遍历Lucene索引的posts列表来执行布尔查询操作。我在这方面是对的吗?

  5. 是否有任何类似的 API 用于调查 Elasticsearch 中的索引时间?我能够在设置 API 中获得索引时间,但我正在寻找类似于配置文件 API 的东西?

0 投票
1 回答
617 浏览

elasticsearch - 如何更新 ElasticSearch search_analyzer 映射而不会在分析器上发生冲突?

我正在使用 7.7 版的 ElasticSearch、LogStash 和 Kibana 并尝试更新字段的索引映射会导致 2 个错误之一:

  • mapper_parsing_exception: analyzer on field [title] must be set when search_analyzer is set
  • illegal_argument_exception: Mapper for [title] conflicts with existing mapping:\n[mapper [title] has different [analyzer]]

这是我正在尝试的操作。如果我删除"analyzer": "standard",我会收到第一个错误。如果我把它留在里面,我会得到第二个错误。

但是,当我使用 获取映射时GET /my_index/_mapping,我没有看到任何定义的分析器:

额外信息

这是我设置“同义词”搜索分析器的方法,但我认为这无关紧要:

0 投票
1 回答
239 浏览

elasticsearch - 从 5.5 到 7.7 的 ElasticSearch 中 _type 的使用

我们正在从 5.5 迁移到 7.7,其中“index”只有一个“_type”。在 5.5 中,“index”将有多个“_type”,我们正在根据当前结构更改数据结构elastic search 7.7 这意味着每个索引都有一种类型。

今年晚些时候,我们将弹性搜索服务器从 7.7 升级到 8,
此外,我们正在使用 Java 传输客户端,这是 7.8 中的 EOL,并将转移到客户端的 Rest 客户端。

目前,我们在 7.7 版本中将单个“_type”映射到“index”,根据文档,我看到它将在版本 8 中变为无类型。那么添加 _type 的最佳方法是什么,或者有没有办法删除类型使用7.7这样我们就不需要在弹性搜索服务器端对8版本做任何改动了。

谢谢,
哈利

0 投票
1 回答
408 浏览

elasticsearch - ES7 - 如何建模 1-n 父子关系 - 不同的 ES 类型

我正在将旧的 ES 实例迁移到 ES7。我们需要 1-n 个父子关系。

我们曾经在同一个索引中有多种类型,这很容易。有些类型通过_parent.

但是 ES7 将只允许单一类型的索引。这让我觉得我会将旧类型转换为单独的索引。

我阅读了文档,他们建议将其join用于父子关系,但是这些似乎仅适用于属于单个索引的文档。

https://www.elastic.co/blog/removal-of-mapping-types-elasticsearch

因此,如果我将以前的类型转换为单独的索引,在我的理解join中将无济于事。

那么在 ES7 中对不同类型(或者我应该说是索引)之间的父子关系建模的正确解决方案是什么?

或者也许我不应该在 ES7 中将我的数据建模为单独的类型/索引。但在那种情况下,如何解决这个问题?

提前致谢

0 投票
1 回答
1687 浏览

elasticsearch - 在 Elasticsearch 7.7 版中跨多个索引进行查询

在elasticsearch 7.7版本中,索引中的多个_types被删除了,现在如果我们想跨多个索引进行查询,我们是通过以下方式进行的。

在 7.7 中,使用 Transport Java API 从多个索引中查询的最佳方式是什么?

编辑
1)假设我有两个索引,“用户”和“推文”我想同时搜索索引 - 用户和推文,如下所示

如果我想查询字段上的“用户”索引为 {“username”=“ Opster ”} 并在字段上的“ tweet ”索引中查询为 {“data”=“ some_text ”}

这可能吗?

2) 我知道,每个索引在弹性搜索中都是一个单独的分区,但是跨索引的搜索如何在弹性搜索内部工作?

谢谢,
哈利

0 投票
0 回答
76 浏览

elasticsearch - 弹性搜索中的父加入未按预期搜索

我们最近从elasticsearch 5.5版本迁移到7.7elasticsearch 7.7
版本去掉了多种类型的概念,所以我们使用JOIN数据类型来映射用户tweet之间的关系,如下所示

https://www.elastic.co/guide/en/elasticsearch/reference/current/parent-join.html

所以用户父母推文是孩子
我的推特索引在用户和推文的组合中有 100 万个条目,当我使用 hasParentQuery / hasChildQuery 时,它按预期工作,我得到了正确的结果。

但是当我尝试只查询 twitter 索引中的父级(即)在这种情况下,我只想搜索twitter 索引中的用户,我查询如下

twitter 索引有 100 万条记录,其中包含 50K 用户条目,并保留为推文。此查询与搜索整个索引 的时间相同(有/没有将 my_join_field 作为用户传递)。

我做错了什么?任何帮助表示赞赏!