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

Elasticsearch中的模糊桶聚合

唐阳泽
2023-03-14

Elasticsearch支持模糊搜索查询:https://www.elastic.co/guide/en/elasticsearch/guide/2.x/fuzzy-match-query.html

和按术语的桶聚合:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html

它说:“……桶是动态构建的——每个唯一的值一个。”

是否有可能通过模糊术语将两个特征和桶结合起来?例如,“America”和“Amrica”将属于同一个桶?(使用“术语”桶,它们属于两个单独的桶,使用“模糊”搜索,两个记录都返回。

我正在尝试按“关键字”分组,包括错别字——也许有不同的方法可以做到这一点?(蛮力是为每个“关键字”运行“模糊”搜索并手动添加数字...)

共有1个答案

萧鸿轩
2023-03-14

这是最好的一种方法,可以很好地索引你的数据,这样你就可以在后面做任何你想做的事情。在使用规范化器或同义词为文档编制索引时,可以处理此问题。

关于规范化器的信息:

  • https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-overview.html#normalization

同义词信息:

  • https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-synonym-tokenfilter.html#analysis-synonym-tokenfilter
 类似资料:
  • Elasticsearch新手问题。我上了莎士比亚的课。json转换为Elastic,我正试图找出如何进行类似于按说话人从行组中计数(1)的聚合。(“Line”是文档的类型,“speaker”是属性之一。) 现在我有一个这样的查询: 结果看起来不错,但ElasticSearch文档指定术语聚合的文档计数是近似值(https://www.elastic.co/guide/en/elasticsear

  • 在elasticsearch中,是否有方法使用自定义分数对聚合桶进行排序/排序? 我正在按客户姓名进行扣球。每个客户都有多个订单,其中有一个交货日期字段(DeliveDate)。我想根据与当前日期的距离(接近程度)对桶进行排序。 例如,对交货日期更接近今天日期的客户名进行排序。 非常感谢。

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

  • 我正在使用Elasticsearch bucket聚合。我有一组文档,每个文档都有一个类别字段,它是一个数组。我需要获得每个类别的数量以及搜索结果。但目前,我得到了错误的doc\u计数。 这是我的聚合查询 } 下面是我得到的错误doc\u计数的结果。

  • 我有一个Elasticsearch文档索引,其中有一个包含URL列表的字段。如预期的那样,在该字段上聚合会给我唯一URL的计数。 然后,我想过滤掉其键不包含特定字符串的桶。我已经尝试使用Bucket选择器聚合来实现这一点。 此尝试: 失败原因: 名为[links\u key\u filter]且类型为[bucket\u selector]的管道聚合无效。顶层仅允许同级管道聚合 将bucket选择器

  • 问题内容: 我有以下查询,以便在搜索中增加模糊性。但是,我现在意识到,匹配查询不像match_phrase那样考虑搜索字符串中单词的顺序。但是,我无法获得match_phrase给我模糊的结果。有没有办法告诉比赛考虑单词之间的顺序和距离? 问题答案: 最终发现我需要使用查询的组合,从而对模糊性和倾斜度进行了大量的微调。我需要添加一个函数来手动标记我的短语并以编程方式添加到“子句”数组中: