【问题标题】:elasticsearch faceted navigationelasticsearch 分面导航
【发布时间】:2016-10-25 21:54:21
【问题描述】:

我正在尝试在 elasticsearch 聚合上创建一个类似 here 的 Rails 应用程序。我更新了它以使用当前的 elasticsearch 2.3。 javascript 运行良好,但当我选择多个复选框时,过滤器不返回任何内容。与不处理复选框的应用程序 here 不同的代码。我错过了什么?

过滤器看起来像这样:

  __set_filters = lambda do |key, f|
    @search_definition[:post_filter][:and] ||= []
    @search_definition[:post_filter][:and]  |= [f]

    @search_definition[:aggregations][key.to_sym][:filter][:bool][:must] ||= []
    @search_definition[:aggregations][key.to_sym][:filter][:bool][:must]  |= [f]
  end

if options[:category]
  f = { term: { "categories,name" => options[:category] } }
  __set_filters.(:location, f)
end

if options[:location]
  f = { term: { "location,name" => options[:location] } }
  __set_filters.(:categories, f)
end

【问题讨论】:

  • 举一个类别名称的例子。是他们的空间吗?你用过标准分析仪吗?

标签: ruby-on-rails elasticsearch aggregation


【解决方案1】:

刚接触 Elastic Search 时,使用过滤器可能会让人头疼,因为它会为特定字段寻找与您的输入完全匹配的内容,但是当它第一次索引事物时(尤其是使用标准分析器的字符串,如果您没有指定不同的)它会将字段拆分为多个字符串,他们的文档将这些字符串称为标记。例如,在不指定分析器的情况下索引名为“Oyster Bay”的城镇实际上会将字段分成两个标记“Oyster”和“Bay”。如果您尝试在此字段上使用过滤器并输入“Oyster Bay”,它不会将其视为完全匹配并返回它。如果您计划对查询使用过滤器,我会建议您为映射中的相应字段添加“not_analyzed”索引以避免此问题。

【讨论】:

  • 非常有帮助的谢谢
猜你喜欢
  • 2014-04-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-14
  • 2016-10-01
相关资源
最近更新 更多