当前位置: 首页 > 知识库问答 >
问题:

elasticsearch中术语聚合可用bucket键的自动完成建议

终睿
2023-03-14

在UI我需要显示自动完成建议,它给我包含搜索术语的术语。例如,如果我搜索per,我可能会得到秘鲁PerryCasperNapervilleCooperstown等建议。搜索框用于搜索/过滤正在使用/显示为城市聚合术语的文件。此字段类型为数组,因此一个文档可以有多个城市。自动建议应仅包含可用/结果文档中的城市。

我知道使用过滤功能的术语聚合与适当的正则表达式。https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html#_filtering_values_4

但我正在寻找一个更好的解决方案,在elasticsearch可以为我提供最快的结果。

共有1个答案

景令秋
2023-03-14

您最好的选择是使用Elasticsearch引入的新关键字数据类型。有关更多信息,请查看此处关于通配符字段的Elastic官方文档。此关键字字段类型针对通配符查询进行了优化

 类似资料:
  • 问题内容: 我正在尝试使用以下查询对以下数据进行elasticsearch来执行术语聚合,输出将名称分解为标记(请参见下面的输出)。因此,我尝试将os_name映射为multi_field,但现在无法通过它查询。是否可以有没有令牌的索引?例如“ Fedora Core”? 查询: 数据: 输出: 映射: 问题答案: 实际上,您应该像这样更改映射 并且您的aggs应该更改为:

  • 我使用聚合从嵌套字段收集数据并卡住了一点 文件示例: ES允许通过rectangle.attributes._id来分组数据,但是有没有办法让一些“其他”桶把没有添加到任何组中的文档放在那里?或者,也许有一种方法可以通过创建查询来为文档创建桶。我认为桶将是完美的,因为我需要使用“其他”文档进行进一步的聚合。或者也许有一些很酷的解决方法 我使用这样的查询进行聚合 然后得到这个结果 这样的结果将是完美

  • 我们目前正在开发一个多语言文档CMS。因此,我们有翻译成不同语言的文件。 对于使用Elasticsearch进行搜索,我们目前使用每种语言(德语、英语、法语……)一个索引,其中同一文档的所有翻译共享相同的ID。 当用户搜索特定术语时,我们希望在所有语言中搜索,但只返回不同ID的列表。据我所知,只有使用以下术语聚合才能做到这一点: 这很好,但是作为弹性搜索文档https://www.elastic.

  • 以下是数据集的快照: 我想获得员工名单以及employeeStatus和employeeAddr。 所以我在employeeId上使用术语聚合,然后使用employeeStatus和employeeAddr的子聚合来获得这些详细信息。下面的查询正确返回结果。 现在我只想要永久身份的员工。所以我正在应用过滤器聚合。 现在的问题是雇员地址聚合没有为雇员地址返回存储桶,因为记录2在聚合完成之前就被过滤掉

  • 我希望能够结合Kibana术语图(能够基于特定属性值的唯一性创建bucket)和直方图(基于查询将数据分离为bucket,然后基于时间说明日期)的功能。 总的来说,我想创建一个直方图,但我只想根据一个查询的结果创建直方图,而不是像Kibana演示应用程序中那样创建多个查询。相反,我希望每个bucket都是根据特定字段的唯一值动态创建的。例如,考虑以下查询返回的数据: 还假设每个记录都有一个字段,用

  • 问题内容: 我有两种日志消息: 第一个消息是已发送消息的类型,第二个消息是确认消息已传递的消息。 它们之间的区别是后缀,我已将其与“ id”分开并可以对其进行查询。 这些消息将按以下格式解析并存储在elasticsearch中: 我想找出哪些消息已成功发送,哪些没有成功。我是Elasticsearch的初学者,所以我真的很努力。 我目前正在尝试术语聚合,但是我所能实现的就是以下代码: 向我显示已发