【问题标题】:Search subdocuments in ElasticSearch with Searchkick使用 Searchkick 在 ElasticSearch 中搜索子文档
【发布时间】:2014-06-25 23:30:53
【问题描述】:

假设我想要搜索一系列嵌入或子文档,但将其父文档作为结果返回,例如 Buildings 和 Units:

Building A
- Unit 1F
- Unit 1R
- Unit 2F: 1200 sq ft
- Unit 2R: 2300 sq ft

Building B
- Unit 202: 500 sq ft
- Unit 203: 650 sq ft

现在假设我想退回所有单位 >= 1000 平方英尺的建筑物。我该怎么做?

【问题讨论】:

    标签: ruby-on-rails ruby search elasticsearch


    【解决方案1】:

    将单位大小存储为数组:

    class Building
    
      def search_data
        {
          # ... other fields
          unit_sq_ft: units.map(&:sq_ft)
        }
      end
    
    end
    

    然后搜索:

    Building.search "pool", where: {unit_sq_ft: {gte: 1000}}
    

    【讨论】:

    • 如果每个单元有多个属性,例如 sq_ft、卧室、浴室、描述,怎么样
    • 嵌套文档搜索现在非常有限。您可以搜索至少有一个单元 w/ X 平方英尺和一个单元 w/ Y 卧室的建筑物,但您不能搜索具有一个单元 w/ X 平方英尺并且同一单元有 Y 卧室的建筑物。
    猜你喜欢
    • 2012-10-22
    • 1970-01-01
    • 2017-10-21
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 2017-01-13
    • 1970-01-01
    相关资源
    最近更新 更多