问题标签 [elasticsearch-query]

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 投票
2 回答
2112 浏览

elasticsearch - 查询时查询上下文和过滤上下文的区别

Query DSL 中的 Elastic Search 中的Query ContextFilter Context有什么区别。

我的理解是查询上下文 - 文档与查询参数的匹配程度。

前任:

如果我正在搜索标题为“搜索”的文档,那么如果我包含两个文档

那么第一个文档是完全匹配的,而文档二是半匹配的。然后第一个文档排在第一位,第二个文档排在第二位。我的理解正确吗?

过滤器上下文
例如:

如果我正在搜索状态为“已发布”的文档,那么如果我包含两个文档

然后第一个文档是完美的,所以它被返回,第二个匹配不是完美的匹配,所以它不会被返回。我的理解正确吗?

0 投票
1 回答
390 浏览

elasticsearch - elasticsearch - 通过完全匹配嵌套对象来查找文档

我有包含多个角色/权利定义作为嵌套对象数组的文档:

我正在尝试过滤掉具有特定角色权限的文档,但我的查询似乎混淆了组合。这是我的 filterQuery 作为“伪代码”

以上应该只返回

  • 角色 1 分配有权限 2 的文档。

但看起来我明白了

  • 分配了角色 1 的所有文档,无视权利
  • 以及所有分配了权利 2 的文件,而不管角色。

有什么提示吗?

0 投票
1 回答
1234 浏览

elasticsearch - Elasticsearch:如何根据具有最大值/最小值的数组对范围查询进行评分

我有许多文档包含一个rate属性,该属性是一个包含可接受率的最小/最大范围的数组。

我现在想执行提供另一个范围的查询,例如:

这工作正常,并且总是返回具有至少一个在我想要的范围内提供的值的值。

但是,对于所有结果,分数是相同的。值是否与文档上的值相同或者它只是达到几个数字的范围都没有关系。如下所示:

有没有办法改善范围搜索提供另一个这样的范围?

0 投票
1 回答
304 浏览

python - Elasticsearch 中 GroupBy 聚合的多个范围的总和

以下映射在使用另一个字段对文档进行分组的字段上的多个级别上聚合。

映射:

我的要求有点复杂,我需要

  1. 对于每个 Emp(获取不同的员工)
  2. 检查是在线交易还是现金交易
  3. 按范围为 0-10,11-20,21-30...的项目分组
  4. 合计金额

最终输出如下:

0 投票
1 回答
1558 浏览

elasticsearch - 用于字数统计的 Elasticsearch 查询过滤器

我目前正在寻找一种方法来返回某个字段中最多包含 n 个单词的文档。

对于包含“名称”字段中少于三个单词的文档的结果集,查询可能看起来像这样,但据我所知,没有像 word_count 这样的东西。

有谁知道如何处理这个,甚至可能以不同的方式?

0 投票
2 回答
11042 浏览

elasticsearch - 带有短语匹配的 Edge NGram

我需要自动完成短语。例如,当我搜索"dementia in alz"时,我想得到"dementia in alzheimer's"

为此,我配置了 Edge NGram tokenizer。我在查询正文中尝试了edge_ngram_analyzerstandard作为分析器。然而,当我尝试匹配一个短语时,我无法获得结果。

我究竟做错了什么?

我的查询:

我的映射:

我的文件:

“阿尔茨海默痴呆症”短语分析:

0 投票
1 回答
28 浏览

elasticsearch - 无论字段的位置如何,都在嵌套文档中搜索字段

考虑一下 Elasticsearch 中的一个文档,如下所示:

id == 2我想在不知道它是在文档的第一级还是在第二级的情况下进行搜索。这可能吗?还请记住,嵌套级别可以是任何东西(在开发时未知)。

id == 2如果这是可能的,在不知道文档id的第二级中有 is 的情况下通过搜索返回此文档的查询是什么?

0 投票
1 回答
90 浏览

elasticsearch - 如何在 Elasticsearch 的同一查询中使用 `gt` 和 `fields`

在我之前的问题中,我被介绍了fieldsin a query_stringquery 以及它如何帮助我搜索文档的嵌套字段。

但它只适用于匹配,如果我想做一些比较怎么办?经过一些阅读和测试,似乎range不支持这样的查询fields。有什么方法可以range对可以分散在文档层次结构中任何位置的字段执行查询,例如在日期上?

即考虑以下文件:

由于嵌套字段,是否有查询搜索与给定文档匹配的date字段(如date > '2016-08-16T16:00:00.000000'),而没有明确给出地址Reply.date?像这样的东西(我知道以下查询不正确):

0 投票
1 回答
259 浏览

elasticsearch - 按字段中的部分字符串而不是 Elasticsearch 中的完整字段进行分组

这里我的索引结构:

我想执行一个聚合,为每个系列带来“PlayCount”的总和,例如:

这就是我尝试这样做的方式,但显然查询失败,因为这不是正确的方法:

有没有办法做到这一点?

0 投票
1 回答
678 浏览

python - Elasticsearch 修复日期字段值。(将字段值从 int 更改为 string)

我使用 python 将数据从 mongodb 发送到 elasticsearch。

有一个名为 的时间戳字段update_time,映射如下:

epoch_millis 用于时间戳。

一切完成后,我曾经range在日期范围内查询文档。但没有任何回报。经过一番研究,我认为问题是:python时间戳int(time.time())是10位,但在elasticsearch中是13位,官方示例

输入 my_index/my_type/2?timestamp=1420070400000。

所以我尝试将 update_time 字段更新 1000 倍:

不幸的是,我发现一切都update_time变成了负数。然后我想出Java int 类型是pow(2,32) -1,远低于1420070400000. 所以我猜时间戳字段不应该是 int ?

然后我想将字段值从 int 更新为字符串(我不想更改字段映射类型,我知道更改映射类型需要重新索引,但这里只需要更改值)

但我不知道我可以使用什么脚本,官方脚本文档没有提到这个