ruby-on-rails - 如何在 Elasticsearch 中查询数组元素

标签 ruby-on-rails elasticsearch elasticsearch-rails

这是我的模型在 flex 搜索中的索引

 {  
       "_index":"cars",
       "_type":"car",
       "_id":"3275",
       "_version":4,
       "_score":1,
       "_source":{  
         "category_id": 6,
          "car_branches":[  
             {  
                "id":32,
                "name":"Type1"
             },
             {  
                "id":33,
                "name":"Type2"
             },
             {  
                "id":36,
                "name":"Type3"
             }
          ],

       }
    }

我可以用以下方式查询category_id
Car.__elasticsearch__.search query:{match:{category_id: 6}}
如何查询car_branches?我试过了
response = Car.__elasticsearch__.search query:{match:{car_branches:[id: 32]}}
我正在获取Elasticsearch::Transport::Transport::Errors::BadRequest: [400]

最佳答案

您首先需要先删除索引并重新创建它。在执行此操作之前,您需要更改映射,并将car_branches字段设置为nested,如下所示:

  indexes :car_branches, type: 'nested' do
      indexes :id
      indexes :name

然后,您就可以像这样进行查询:
response = Car.__elasticsearch__.search query:{nested:{path: 'car_branches', query:{term:{'car_branches.id':[32]}}}}

关于ruby-on-rails - 如何在 Elasticsearch 中查询数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40624208/

相关文章:

ruby-on-rails - Elasticsearch 6.3.2术语匹配空数组 “plus”其他

ruby-on-rails - 将过滤器添加到ElasticSearch查询

sql - 将SQL封装在named_scope中

ruby-on-rails - 无方法错误 : undefined method `has_attached_file'

java - 如何定义自定义分析器以使用 hibernate-search 和 elasticsearch 进行全局搜索

.net - 创建模板时如何在Elasticsearch.Net/NEST中设置Alias.is_write_index

ruby-on-rails - 将搜索词屈服/添加到ElasticSearch结果中

ruby-on-rails - Rails + Postgres : How to `order` Using Multiple Possibly Nil Columns?

ruby-on-rails - 如何在Ruby in Rails中使用外部API

c# - 索引文件后删除模板