简体   繁体   English

elasticsearch-6.8.13,多匹配范围查询不起作用

[英]elasticsearch-6.8.13, Multi Match Range Query is not working

I am using the ElasticSearch custom DSLs & want to use the query to find the accommodations that have adults gte [:adults] & lte [:perfect_adults].我正在使用 ElasticSearch 自定义 DSL 并希望使用查询来查找具有成人 gte [:adults] 和 lte [:perfect_adults] 的住宿。 Its not working even if we used the static values using this formal docs of elastic search.即使我们使用弹性搜索的正式文档使用静态值,它也不起作用。 https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html#range-query-top-level-params https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-query.html#range-query-top-level-params

      if params[:adults].present? && params[:perfect_adults].present?
        conditions << { range: { adults: { gte: params[:adults].to_i, lte: params[:perfect_adults].to_i } } }
      elsif params[:adults].present?
        conditions << { range: { adults: { gte: params[:adults].to_i } } }
        conditions << { range: { adults_and_children: { gte: (params[:adults].to_i + params[:children].to_i) } } }
        conditions << { range: { minimum_adults: { lte: params[:adults].to_i } } }
      end
If you have perfect adults attributes in db then:

conditions << { range: { adults: { gte: params[:adults].to_i } } }
conditions << { range: { perfect_adults: { lte: params[:perfect_adults].to_i } } }

If you don't have perfect adults attributes in db then:

conditions << { range: { adults: { gte: params[:adults].to_i, lte: params[:perfect_adults].to_i } } }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM