问题标签 [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.
sorting - 使用 Elasticsearch 根据得分最高(匹配)的嵌套字段值对父文档进行排序
弹性搜索版本:7.6.2
我在下面有以下简化的结构和查询。
我需要实现的是以某种方式获得最佳匹配的嵌套结果,然后从该嵌套变体中获取价格字段。
- 按最低价格排序时,排序应为第一个产品返回 210,为第二个产品返回 60
- 匹配两个标签“vege”“medium”
- 按最高价格排序时,排序应为第一个产品返回 220,为第二个产品返回 65
- 匹配一个标签“中”
我尝试了几件事
- 对 multi_match 使用“and”而不是“or”,但第二个产品会从结果中排除。
- 使用 max_children 进行嵌套排序,但它只需要数组中的第一个嵌套(过滤后,它不会按分数对它们进行排序)。
- 在执行 max_children 之前,我检查了是否可以按分数对嵌套变体进行排序,显然不是。
任何建议表示赞赏,这不是最终结构,因此也欢迎任何改变结构的想法。
这样的事情是如何实现的,也许是使用脚本?
elasticsearch-7 - ElasticSearch Python客户端:如何获取别名后面的索引名称
如果在 ElasticSearch 中给定索引名称,我知道如何获取别名:
有没有办法反其道而行之?像 es.indices.get_index(aliasname) 这样的东西?我现在使用 es.indices.get_alias 实现了一个解决方法,但我只是好奇。
java - 从 ElasticSearch 7.3 中获取字段。用 Springboot java 编写文档
我正在使用以下 java 代码查询 elasticsearch 7.3 并获取 1 个文档。我已将其设置为只有 1 个得分最高的文档。它工作正常,并完美地返回了我的文档。
响应如下,我想使用 java 代码访问值Calories , Fat , Protein , Carbohydrate
并忽略 other 的值Nutrient
。我需要 4 个变量中的值,就像String caloriesVar=153 kcal
其他 3 个变量一样。
[
php - 文本数据类型的 Elasticsearch index_options=docs 不返回任何搜索结果
我一直在使用 Elasticsearch 7.6 和 PHP 客户端 API 进行所有操作。我创建了弹性搜索索引设置和映射如下
我能够使用以下代码索引文档
但是当我使用以下搜索查询时
我得到如下空结果
在不创建静态索引模板的情况下,如果我尝试建立索引,elasticsearch 动态映射效果很好,并且我得到了结果。
目标是我希望弹性搜索仅在其倒排索引中索引文档 ID,而不是位置或偏移量,并且我只想检索匹配的文档 ID 作为结果。非常感谢您的帮助。提前致谢!
aws-security-group - AWS ElasticSearch:如何找到关联的安全组
我试图在 AWS 中找到我的 Elasticsearch 域的安全组,但在 Elasticsearch 控制台中,我找不到它。我的 ES 域不在 VPC 内,但通过一些身份验证向 Web 公开。
我想要做的是将一些 IP 地址列入白名单并阻止其余的,我想使用安全组来实现它。
elasticsearch - 重复的 ElasticSearch 文档
我们使用 spring boot 应用程序来插入/更新弹性搜索文档。我们的数据提供者通过 Kafka 发送数据。我们的应用程序处理事件,尝试查找记录并插入记录,如果不存在,或者如果接收到的记录与保存的记录不同,则更新。elasticsearch 中不应该有任何重复的记录。
应用程序插入/更新文档并立即刷新
问题:有时我们必须删除所有数据并重新加载它们,因为有重复的记录。我发现这些克隆的记录仅与插入日期不同。它通常有几个小时的差异。
通常它按预期工作,详细的集成测试org.codelibs.elasticsearch-cluster-runner
是绿色的。
来自弹性搜索查询的示例元数据:
测试
- 我将多次数据加载到 ES 的本地实例 - 没有重复
- 我创建了一些长期工作的集成测试,在内存中有 1 到 5 个节点的本地实例上进行大量插入、更新、查询 -
org.codelibs.elasticsearch-cluster-runner
没有重复
详细信息:Elastic Search 版本 - 7.5 ES 连接org.elasticsearch.client.RestHighLevelClient
elasticsearch - index_not_found_exception, reason=no such index [Sugestao]] - 如何将索引名称传递给 reactiveElasticsearchOperations.search
我在这个问题中粘贴了错误,这是真的:没有 Sugestao 索引。正确的名称是 sugestao(记下 S 与 s)。
据我所知,我无法创建大写索引。到目前为止,一切都很好。问题是:如何“强制”spring-data-elasticsearch 搜索 sugestao 而不是 Sugestao,因为我的模型是大写的 java 类?我猜它会自动选择大写字母。
在 Spring-Data-Elasticsearch-3.2.6 (Elastic version 6.x) 我可以看到 find 有一个清晰的设置方式
我如何在 Spring-data-Elasticsearch.4(Elastic 版本 7.x)中做类似的方法我正在尝试搜索,因为不推荐使用 find
我得到
ReactiveSearchOperations 类型中的方法 search(Query, Class, Class) 不适用于参数 (NativeSearchQuery, Class, String)
一些相关的子问题是:
似乎在不推荐使用的 Find 版本中我可以传递一个字符串,现在在搜索中它需要一个类。但是要设置索引名称的是哪个类?
也许我可以在其他 spring-data-elasticsearch 配置中设置索引的名称或将其设置为使用小写,然后我可以在不添加索引名称的情况下进行搜索。
通量>fluxSearchHits = reactiveElasticsearchOperations.search(query.build(), Sugestao.class);
php - 尝试执行布尔或查询一次检索所有匹配文档时的 Elasticsearch gc 开销消息
我一直在使用 Elasticsearch 7.6 和 PHP 客户端 API 进行所有操作。我创建了弹性搜索索引设置和映射如下
我的布尔 OR 搜索查询如下
我已经索引了 200 万份文档,所有文档都与查询匹配,并且我也按预期获取了所有文档。由于我匹配所有文档,因此我通过在 bool 查询中使用过滤器来避免评分。
但是在我的日志文件中,我反复收到以下消息,直到查询完成执行。有时我在批量索引文档时会收到相同的消息
我为我的堆内存分配了 16 GB。elasticsearch 日志中未显示其他警告。可能是什么原因?还是在检索大量文档时预期?我了解滚动 API,但我很好奇为什么当我为 index.max_result_window 使用大值时会发生这种情况。非常感谢帮助?提前致谢!
elasticsearch - 带有 null 的字段仍然在 ES 7.5 中被索引
我看到带有 Null 的字段仍在 ES 7.5 中进行索引,但根据 ES “无法索引或搜索空值。当字段设置为空时”。我记得当我们在调用 buklupdate API 时以 null 传递的同一字段在 ES 5.5 中没有被索引,并且只有映射中指定的字段被索引并忽略其他字段(不是映射的一部分),即使我们包含在请求中也是如此。
如果了解要在 ES 7.5 中打开任何特定标志以解决此问题,将会有很大帮助?
仅供参考:我们在映射中将动态设置为严格。谢谢你 !
elasticsearch - 如何从分数计算中取出(别名字段的长度)
假设我们有一个包含人名和别名数组的文档,如下所示:
假设我有一个包含 10 个别名的文档和另一个包含 2 个别名的文档,但它们都包含带有 value 的别名کریستیان
。
第length of field (dl)
一个文档的 比第二个文档大,因此第term frequency (tf)
一个文档的 比第二个文档低。最终,具有较少别名的文档的分数比另一个大。
有时我想为不同语言和不同形式的人添加更多别名,因为他/她更有名,但这会导致结果得分较低。我想以某种方式length of the aliases field
退出我的查询计算。