【问题标题】:Multiple elasticsearch filters多个弹性搜索过滤器
【发布时间】:2013-11-11 18:14:18
【问题描述】:

我正在使用 Tire for rails 来集成弹性搜索。这有点令人困惑,我想确保我做对了。

这就是我应用多个过滤器的方式吗?我基本上是在尝试检查'mixtape_id IS NULL AND artist_id IS NOT NULL'

  def self.search(query)
    tire.search() do
      query  { string query }
      filter :exists, { field: 'artist_id' }
      filter :not, { exists: { field: 'mixtape_id' } }
    end
  end

这是我的第二次尝试,似乎仍然没有工作

  def self.search(query)
    tire.search(load: true) do
      query  { string query }
      filter :and, [
        { exists: { field: 'artist_id' } },
        { not: { exists: { field: 'mixtape_id' } } }
      ]
    end
  end

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 elasticsearch tire


    【解决方案1】:

    我大部分时间都在工作,虽然叹息,但我愚蠢地忘记了每次都强制重新索引。下面是一些利用 missing 过滤器的清理代码。

      def self.search(query)
        tire.search load: { include: { artist: :attachments } } do
          query  { string query }
          filter :and, [
            { exists:  { field: 'artist_id' } },
            { missing: { field: 'mixtape_id' } }
          ]
        end
      end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      相关资源
      最近更新 更多