问题标签 [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 回答
603 浏览

python - Elasticsearch 查询 - 根据其他字段打印某个字段

我的目标是在一个字段中找到最大值并在这个找到的文档中打印另一个字段。到目前为止我的查询:

结果是

现在我需要打印text文档中包含compound值 0.8442 等的字段。谢谢您的建议。

0 投票
2 回答
6065 浏览

elasticsearch - 是否可以在 Elasticsearch 查询中添加评论?

是否可以在 Elasticsearch 查询 JSON 中添加评论?我希望能够在查询中添加一些额外的文本,这些文本是人类可读但被 Elasticsearch 忽略的。

例如,如果我有以下查询:

我希望能够添加评论,也许是这样的:

Hacky 变通办法(例如,对结果没有影响的查询子句)也将受到赞赏。

0 投票
0 回答
148 浏览

elasticsearch - 在 ElasticSearch 的父子表中使用 query_string 进行全文搜索

我们在 ElasticSearch 查询中发现了一个奇怪的行为。我们有两种类型,它们作为父母(申请人)和孩子(附件)连接在一起。

父表的映射:

子表的映射:

我们需要查询两个表中的所有字段以找到某些关键字并返回父文档。为此,我们使用以下查询:

如果我们搜索“java css”(不带引号),我们会找到包含其中一个或两个术语的文档。

如果我们搜索“+java +css”(不带引号),我们只会在其中一个表中找到同时包含这两个术语的文档。如果其中一个条款在申请人表中,另一个在附件表中,则这些文件不会被退回。

有没有办法用 query_string 查询所有字段父子表,其中包含必需的术语(+)?

0 投票
1 回答
268 浏览

performance - 使用过滤器、查询或两者混合来优化弹性搜索查询

我正在尝试提高弹性搜索查询的性能。查询的目标只是检索那些与查询匹配的文档,所以分数无关紧要,也很重要的是我们每天得到一个索引,所以查询。据我所知,对于这种情况,最好使用过滤器,避免计算得分,但我也只是认为有/有一些替代方法在查询中使用 finter 检索所有文档分数 1,所以我做的第一个查询是 followig :

然后我进行了第一次测试,我将“过滤器”更改为“查询”,大多数时候我使用“查询”然后“过滤器”得到更好的时间,这是我的第一个问题,为什么?我在查询中做错了什么以使过滤器比查询慢?

之后我继续阅读试图改进它,我得到了这个:

对于后者,我的印象有所改善。因此,根据您的经验,您能否告诉我哪一个更好(至少在理论上)以获得更快的结果,也存在使用其中一个查询缓存改进向前查询的结果的机会。有更好的方法来进行这个查询吗?在此先感谢您的帮助。我忘了提到我正在使用 Elasticsearch v2.3

0 投票
0 回答
86 浏览

elasticsearch - ElasticSearch 多个短语,多个距离

我们有一个应用程序,您可以在其中关注“Ford Mustang”和“Fly Rod”等关键字。但是,当您关注关键字时,您可以为其分配范围距离。例如,您可能愿意为“1969 Ford Mustang”行驶 500 英里,但您可能只愿意为“Fly Rod”行驶 20 英里。

我试图找出最好的查询类型以及它的结构,以便我们可以说出以下内容。

1.) 取出所有后面的短语并从距离小于或等于最大距离的文档中拉回结果。

我可能会遵循这些短语。

短语:1969 年福特野马
距离:800 英里

短语:飞杆
距离:20 英里

短语:2015 F-150
距离:300 英里

我们正在尝试使用单个 ElasticSearch 查询来拉回所有结果。有没有人有一个如何做这样的事情的例子?我尝试使用 QueryString ,但这不允许您按距离过滤或进行任何类型的分页,两者都是必需的。

我也尝试了一个 multi_match ,但是这会对单词做 OR ,所以如果我关注“Fly Rod”,它会返回带有“Hot Rod”的文档,我们不希望这样。它似乎返回了它们,因为 multi_match 在查询关键字上使用了 OR。

这是在向全世界发布网站之前的最后一个主要障碍,但查看所有不同的查询类型,我看不出它是如何完成的。

如果有人有一个例子说明如何使用 ElasticSearch 完成这样的事情,我将不胜感激方向/反馈。我不害怕阅读文档或教程,我只是无法找到与这种情况相关的任何内容。

我们需要在查询中使用距离和短语。我个人可以看到此工作的唯一方法是对每个后续短语进行单个查询,但出于性能原因这是不可接受的。我可以轻松地跟踪 100-1000 个短语,即使 ES 非常快,许多查询也会花费太多的网络时间来提高性能。

0 投票
2 回答
985 浏览

elasticsearch - 术语查询没有给出正确的结果

映射

数据

查询(匹配)

它没有给我任何结果,但是,

这给了我正确的结果

查询(期限)

这也不会给出任何回应。

我的问题:

  1. 为什么会这样?请给出正确的解决方案!
  2. “术语”,“匹配”,“匹配短语”查询之间有什么不同。
  3. “关键字”、“文本”、“字符串”有什么区别?它影响查询?
  4. 什么是日期数据类型格式,我们可以以哪种格式保存数据?

TIA。

0 投票
1 回答
962 浏览

elasticsearch - Elasticsearch:数组的交集

假设我的文件是这样的

我想做一个查询,我将在其中提供一组城市,并根据交集的基数获取文档。即假设我的城市集是["Ahmedabad", "Mangaluru"],那么这个查询与上述文档的交集的基数是 2。我的查询应该是什么?

样本响应

我正在使用弹性搜索 5.2.2

0 投票
1 回答
123 浏览

elasticsearch - 弹性搜索查询返回特定类型数组中的术语

我有一个索引的映射如下:

{"tagged_index":{"mappings":{"tagged":{"properties":{"tags":{"properties":{"resources":{"properties":{"tagName":{"type":"string"},"type":{"type":"string"}}}}},"content":{"type":"string"}}}}}}

其中Resources是一个可以有多个标签的数组。例如

{"_id":"82906194","_source":{"tags":{"resources":[{"type":"Person","tagName":"Kim_Kardashian",},{"type":"Person","tagName":"Kanye_West",},{"type":"City","tagName":"New_York",},...},"content":" Popular NEWS ..."}} , {"_id":"82906195","_source":{"tags":{"resources":[{"type":"City","tagName":"London",},{"type":"Country","tagName":"USA",},{"type":"Music","tagName":"Hello",},...},"content":" Adele's Hello..."}}, ...

我确实知道如何使用以下查询提取重要术语 [tagName],但我不想要所有类型的术语 [tagName]。如何仅提取例如 Cities only [type:City] 的术语?(我想获得类型为 City 的 tagName 列表,即伦敦、纽约、柏林……)

{"size":0,"query":{"filtered":{"query":{"query_string":{"query":"*","analyze_wildcard":true}}}},"aggs":{"Cities":{"terms":{"field":"tags.resources.tagName","size":10,"order":{"_count":"desc"}}}}}

以下是所需输出的外观:

{"took":1200,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":5179261,"max_score":0.0,"hits":[]},"aggregations":{"Cities":{"doc_count_error_upper_bound":46737,"sum_other_doc_count":36037440,"buckets":[{"key":"London","doc_count":332820},{"key":"New_York","doc_count":211274},{"key":"Berlin","doc_count":156954},{"key":"Amsterdam","doc_count":132173},...

0 投票
1 回答
40 浏览

elasticsearch - Elasticsearch 检查标题是否已在类型中使用

我在 Elasticsearch 中收集了一个数据库,我没有通过 ID 来识别它们,而是通过标题来识别它们。因此,每种类型的标题都不相同。

我尝试过,must => match_phrase但它让我得到了不止一个回报。可能会调用"Document 1"某些东西,也可能会调用其他东西"Document 1,2,3"。因此,它会通过执行返回多个结果match_phrase

假设我有 5 个文件名为:

  1. 文档示例 1
  2. 示例 1
  3. 1 文档示例
  4. 文档示例 1 和 2
  5. 文档示例

我应该发送什么请求只返回例如:"Document example"

我尝试了这种搜索的不同变体127.0.0.1:9200/index/type/_search

所以我想知道如何检查或搜索确切的解析并只得到一个或零个结果作为回报?

编辑

127.0.0.1:9200/myindex/mytype/_mapping返回这个:

0 投票
1 回答
1278 浏览

java - 在 Elasticsearch 中添加多个 Sum 聚合

我有一个 json 查询版本,可以在这样的聚合中添加两个字段的总和 -

我需要使用 Java QueryBuilder for Elasticsearch 将我的数据转换为这个查询

至今 -

有什么帮助吗?