问题标签 [elasticsearch-dsl]

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 回答
3051 浏览

elasticsearch - 基于 doc_count 的 Elasticsearch 范围桶聚合

我有一个像这样的弹性搜索聚合查询。

它导致桶聚合如下

我想要另一个基于 doc_count 的范围桶聚合。所以,需要的最终结果是

  • Bucket Selector Aggregation 然后使用bucket sum 聚合将不起作用,因为范围有多个键。
  • 桶脚本聚合在桶内进行计算。
  • 我可以为每个文档添加脚本文档字段来帮助我创建这些存储桶吗?
0 投票
1 回答
405 浏览

elasticsearch - 使用 elasticsearch_dsl 获取所有行

目前我正在使用以下程序从弹性搜索中提取 id 及其严重性信息。

我相信默认情况下查询返回 10 行。我在弹性搜索中有超过 10000 行。我需要获取所有信息。

有人可以指导我如何运行相同的查询来获取所有记录吗?

0 投票
1 回答
3939 浏览

python - elasticsearch-dsl-py 查询形成

有人可以告诉我如何使用这个 dsl python 模块来构建这个示例查询吗?

到目前为止,我只有查询字符串的一部分。

我不确定其余查询的语法如何。任何帮助深表感谢。

所需的查询构造如下。

0 投票
0 回答
105 浏览

django - Elasticsearch 排序“中断”过滤器

我正在尝试为每个客户拆分日志。我想我了解 Elasticsearch 的 Query DSL。

为了过滤日志,我使用域名作为过滤参数。这次我们会打电话给他们

  • bh250.example.com
  • bh500.example.com

现在我已经设法过滤日志,以便域 bh250.example.com 的所有者只能看到他的日志文件。

但是当我想对它们进行排序时,它会根据时间戳“破坏”过滤器并显示 bh250 和 bh500 日志。

现在没有排序功能,它会显示正确的日志,但顺序不同。使用排序功能,我可以在屏幕上获得两条记录。(bh250 和 bh500)

我还研究了映射是否可能是问题,但我不太确定为什么排序功能会破坏我的“过滤器”

0 投票
1 回答
195 浏览

elasticsearch - 聚合弹性搜索中的最后一个文档

我对 ES 有点陌生,我不确定如何执行以下操作:

我使用仅包含几个“应该”参数的查询运行搜索。

然后还有一些聚合,例如百分位数、术语分桶等。

但是对于聚合,我只想要它,例如,聚合前 1000 个文档(我希望然后按分数对其进行评分和排序)。

这个想法是我想要特定术语的 aggs,但如果找不到足够的,则将其填充 - 但仅限于要聚合的特定最大数量。从文档看来,size它返回的文档数量,而不是用于 aggs 的大小(我不需要命中,只返回 aggs)。

那么我该怎么做呢?是否有嵌套/后续查询?我必须pipeline做点什么,例如搜索 1k 文档,然后 agg 吗?

如果文档可以首先按它被索引的时间戳进行排序,那将是理想的 - 这样用于“填充”的文档是最新的 - 但 AFAIK 不可能吗?

填补;填写(表格,资料?

“填写”意味着我有 100 个文档,用于指定一个指定的“应该”字段。然后我仍然需要其他 900 个文档来聚合所需的 1k 结果大小(以便将其填充到所需的数量)。因此,我没有使用过滤器,而是在文档中看到了“组合查询”,我认为使用“应该”参数就足够了。

0 投票
1 回答
2006 浏览

python - Elasticsearch如何查询高于x的ID字段

我正在尝试通过多次查询来将分页应用于结果以超过 Elasticsearch 的 10k 障碍。由于 Elasticsearch 的结果在多个查询期间可能不同,我想使用生成的 ID 来获取下一个结果。

例如,我运行一个返回 1000 个结果的查询。然后我想获取第 1000 个结果的 ID 值,并执行如下查询: match : ID {{1000thID}}

这样我想得到 1001 到 2000 的结果。从 2001 年到 3000 年,以此类推。

我目前使用 Elasticsearch DSL for python 来查询域名,例如:

如何重建此代码以匹配上述要求。('匹配',_ID > ID_Variable)

0 投票
1 回答
510 浏览

elasticsearch - 从 inner_hits 过滤对象中检索字段值抛出错误

在我的映射文档中,我有一个嵌套对象字段,如下所示

我有一个很长的 DSL 查询,其中一个过滤器是:

我正在尝试使用inner_hits来获取选定的可用性对象并返回如下内容:

我的目标是使用 inner_hits 中选定对象中的一个文件来计算分数。由于可用性对象可能有多个对象,但总是只有一个对象符合我的搜索条件。所以这就是我的查询:

但是当我使用上面的脚本时,我得到以下错误:

如何age在分数计算中获取 selected_availabilities 字段?任何帮助将不胜感激。

0 投票
0 回答
359 浏览

groovy - 用于迭代嵌套对象以进行评分的 Elasticsearch groovy 脚本抛出错误

我的文档中有一个嵌套对象mygroup,如下所示:

script_score我的其中一个function_score如下:

在这里,我的目标是找到一个符合我的条件的对象,其中start>= 期望 AND end<= 期望(总是只有一个对象可以满足这个条件,这在我的数据存储中得到保证),一旦我找到那个对象,我就会想回来(it.end - delta) * 2计算分数

我上面的脚本"_source['mygroup'].values.any{ if(it -> it.end >= desired && it.start <= desired) { return (it.end - delta) * 2} };"不工作,它不断抛出错误。我正在使用 ES 2.3 和 groovy 编写脚本语言。

如果我doc['mygroup']在 的地方使用_source['mygroup'],那也无济于事

0 投票
1 回答
155 浏览

groovy - groovy 脚本中的语法错误 - 出了什么问题?

我正在尝试在我的 elasticsearch dsl 脚本中执行以下 groovy 脚本片段:

[doc['availabilities.start'], doc['availabilities.end']].transpose().any { (start, end) -> end.date.getMillis() >= 11 } return 2; ```

这会引发以下错误 在此处输入图像描述

我是 Groovy 的新手,无法弄清楚这里的错误语法是什么。任何帮助将不胜感激。

0 投票
0 回答
325 浏览

elasticsearch - Elasticsearch 无法访问具有嵌套字段的脚本中的“doc”

使用 ES 2.3.3 我的一段文档映射如下:

在脚本中,我试图找到这个领域的距离

但这不断抛出错误:

我正在遵循指南https://www.elastic.co/guide/en/elasticsearch/reference/2.3/modules-scripting.html#_document_fields那么我做错了什么?请注意我所有的文件都有location字段,它们都不是空的或空的。我上面的脚本中似乎doc没有。

请注意,即使我rents.avg从脚本中删除错误仍然存​​在。所以我的怀疑是doc不是里面不可用path: rents?如果是这样,那么如何让它工作?