问题标签 [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 投票
1 回答
2113 浏览

elasticsearch - 如何处理弹性搜索结构化查询中的通配符

我的用例需要使用尾随通配符查询我们的弹性搜索域。我想就在查询中处理此类通配符的最佳做法征求您的意见。

您是否认为添加以下子句是查询的好习惯:

我不允许使用前导通配符,因为它是一项繁重的操作。但是,我想从长远来看,为每个查询请求分析通配符有多好。我的理解是,如果查询实际上没有任何通配符,则分析通配符将没有影响。那是对的吗?

0 投票
1 回答
129 浏览

elasticsearch - 具有特定参数的弹性搜索中的聚合

我在 elasticsearch 中有大量文档,作为示例,我将 elasticsearch 文档示例作为银行


现在每个文档中都有一个名为 state 和 price 的字段。
我如何编写一个查询,它只返回包含不同状态的结果,排序顺序为 asc 顺序中的余额。

我正在尝试使用术语聚合但没有用。
更新


现在对于这个查询,我将返回所有热门歌曲,价格按该键“状态”排序。但我想要的是一个排序结果 wrt 平衡和独特的状态字段。
对于上述查询,我​​得到如下响应

这不是按价格排序的。

0 投票
1 回答
6819 浏览

elasticsearch - Elasticsearch wildcard query with spaces

I'm trying to do a wildcard query with spaces. It easily matches the words on term basis but not on field basis.

I've read the documentation which says that I need to have the field as not_analyzed but with this type set, it returns nothing.

This is the mapping with which it works on term basis:

This is the mapping with which the exact same query returns nothing:

The query is here:

curl -XPOST http://127.0.0.1:9200/denshop/products/_search?pretty -d '{"query":{"wildcard":{"name":"*test*"}}}'

Response with the not_analyzed property:

Response without not_analyzed:

EDIT: Adding requested info

Here is the list of documents:

Without the not_analyzed it returns with this:

curl -XPOST http://127.0.0.1:9200/denshop/products/_search?pretty -d '{"query":{"wildcard":{"name":"*testovací*"}}}'

But not with this (notice the space before asterisk):

curl -XPOST http://127.0.0.1:9200/denshop/products/_search?pretty -d '{"query":{"wildcard":{"name":"*testovací *"}}}'

When I add the not_analyzed to mapping, it returns no hits no matter what I put in the wildcard query.

0 投票
0 回答
264 浏览

angularjs - 本地弹性搜索主机阻塞请求,启用了来自 angularJS 的请求标头

我正在尝试向本地弹性搜索发布请求。我已将 elasticsearch.yml 配置为包括:

我也试过:

从 Postman 发布时没有问题,但是从 AngularJS 发布时,我收到此错误:

角码如下:

- - - -回答 - - - - -

我通过将 Content-Type 设置为 undefined 来解决它,然后从请求标头中删除 Content-Type。

我不确定这是否是正确的做法,所以如果有人有任何批评,我很想听听。

0 投票
1 回答
1060 浏览

elasticsearch - 给定时间范围和 AND 运算符的深度 Elasticsearch 通配符查询

我设法建立查询

  • 匹配给定时间范围内的所有精确值
  • 支持and运营商。

现在我想扩展查询以支持部分匹配,但我很难做到这一点。任何意见,将不胜感激。

映射

当前查询

0 投票
2 回答
94 浏览

elasticsearch - Elasticsearch 多字段查询

我已经配置了一个包含两个字段的 Elasticsearch 索引:“名称”和“类型”。当我执行下面的查询时,我没有得到任何结果,因为“演员”在“类型”字段中。

有什么方法可以执行包含多个单词的查询,并且即使某些单词在“名称”字段中而其他单词在“类型”字段中也能获得结果。

谢谢你的帮助!

0 投票
0 回答
506 浏览

elasticsearch - 弹性中的子聚合或聚合过滤器

我有一个带有名称和时间戳的记录列表。对于每个名称,我想获得最大时间戳,但我只想在一小时前获得具有最大时间戳的名称(这意味着在我的结果中我只想查看名称列表及其最大时间戳,但仅适用于一个小时前具有最大时间戳的名称。如果一个名称有一小时前的时间戳记录,我不想在我的结果中看到这个名称)。

我尝试使用聚合来解决这个问题,通过在名称上创建术语聚合,然后聚合最大时间戳,然后在一小时前过滤具有最大时间戳的记录,如下所示:

但是,此查询会产生以下错误:

我基本上可以通过在最大聚合之前使用时间戳过滤器来获得类似的功能,如下所示:

实际上,对于通过最大值过滤器的每个名称,我得到一组结果,其中包含名称和 max_timestamp,对于每个未通过最大值过滤器的名称,我得到一个空的 max_timestamp。这是我可以使用的解决方案,但是,由于为每个名称运行的最大值过滤器,此查询不会返回大量记录。

在此先感谢您的帮助。

0 投票
0 回答
82 浏览

elasticsearch - Elasticsearch - 在 nested_filte 中使用 bool 查询

我有一个查询,从数量为 5 的产品中筛选出特价产品。现在我想按价格降序订购产品。由于每件的价格高于一件的数量,因此不应考虑在内。我读到我可以使用 nested_filter 在排序中进行过滤,但是当只是复制粘贴查询时它不起作用。下面是一个简短版本,其中仅显示了最重要的查询部分。

0 投票
0 回答
165 浏览

elasticsearch - ElasticSearch - 获取具有不同字段的第一个文档

我只想从许多具有相同字段值的文档中获取一个文档。以下文档已编入索引:

当对术语位置进行搜索请求等于一时,应该只返回一个文档。

0 投票
1 回答
1758 浏览

elasticsearch - Elasticsearch 可以在不指定字段的情况下按日期范围过滤吗?

我有多个日期字段,我希望有一个日期范围查询来过滤它们中的任何一个。

例如,我的索引中可能有书籍,每本书可能有出版日期出版日期印刷日期作者出生日期

映射很简单(使用Elasticsearch.net Nest生成):

我查看了范围查询查询字符串范围- 两者都需要明确的字段名称并且似乎不支持通配符。
例如,这没有找到任何东西,但如果我使用真实的字段名称而不是"*Date"

我还尝试放入[2010-01-01 TO 2015-01-01]查询字符串,但日期未正确解析 - 它还找到201001作为其他字符串的一部分(以及看似其他日期)。
另一种选择是在"should"子句下列出每个字段并指定"minimum_should_match":1,但这将使我维护所有日期字段的列表,这似乎不雅。

有没有办法在所有日期字段上搜索日期范围?