【问题标题】:Elastic search Query String in Rails 4Rails 4 中的弹性搜索查询字符串
【发布时间】:2016-07-13 13:21:43
【问题描述】:

我在我的应用程序中使用 Elasticsearch 来搜索表中任意位置的匹配词。

这是我用来获取结果的查询字符串:

search({ query: { prefix: { _all:  keywords }}, sort: [ { start_date: 'asc', start_time: 'asc' } ] })

然后通过以下查询查询所选记录的日期以匹配应用程序中指定的日期范围:

where("status_id= ? and active=? and (((start_date >= ?) and (start_date <= ?))
or ((start_date <= ?) and (? <= end_date)))",2,true,range_start_date,
range_end_date,range_start_date,range_start_date)

但我知道这不是获取结果的好方法。现在我想修改它以从弹性搜索索引中获取所需的数据。

经过长时间的搜索,我发现“query_string”和“simple_query_string”符合我的要求。但我到现在都没有成功获得所需的结果。

如何将查询附加到 elasticsearch 结果以获取所需的记录? 有人可以帮忙吗?

提前致谢。

【问题讨论】:

    标签: ruby-on-rails-4 elasticsearch


    【解决方案1】:

    最后,我自己找到了问题的答案。我可以使用“过滤器”关键字根据日期过滤搜索到的内容。

    我将查询修改为:

    search_query = {
     query: {
       prefix: { 
         _all:  keywords 
       }
     }, 
     filter: {
       query: {
         query_string: {
           query: "status_id:2 AND active:true AND 
           ((start_date:>=#{range_start_date} AND start_date:<=#{range_end_date}) (start_date:<=#{range_start_date} AND end_date:>=#{range_start_date}))"
         }
       }
     },
     sort: [ { start_date: 'asc', start_time: 'asc' } ] }
    

    最后通过以下方式获取结果:

    @result = self.search(search_query)
    

    如果无论如何我可以修改此代码,请提出建议。谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多