繁体   English   中英

如何使用布尔值限制Elasticsearch查询结果?

[英]How to use bool to limit Elasticsearch query results?

在我的Rails应用中,我有2个模型:User(id)和Document(id,user_id,document_title,document)

  def self.search(query)
    __elasticsearch__.search(
      {
        query: {
          multi_match: {
            query: query,
            fields: ['document_title^10', 'document']
          }
        },
      }
  end

我正在使用上面的搜索查询,该查询非常适合整个表的返回结果。 问题是,结果不限于current_user。 我正在尝试将搜索方法更新为仅返回current_user的结果。 根据文档,我在做:

  def self.search(query, user_id)
    __elasticsearch__.search(
      {
        bool: {
          filter: ["user_id", user_id]
        },
        query: {
          multi_match: {
            query: query,
            fields: ['document_title^10', 'document']
          }
        },
      }
  end

但是,这是错误的:

[400] {"error":{"root_cause":[{"type":"search_parse_exception","reason":"failed to parse search source. unknown search element [bool]","line":1,"col":2}],"type":"search_phase_execution_exception","reason":"all shards failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":"documents","node":"52GAD0HbT4OlekjesTZY_A","reason":{"type":"search_parse_exception","reason":"failed to parse search source. unknown search element [bool]","line":1,"col":2}}]},"status":400}

我不确定您要查看的文档是什么,但该查询不正确:多重匹配查询应位于bool查询的must子句中。

{
   query: {
     bool: {
       must: [{
        multi_match: {...}
      }],
      filter: [{
        term: {user_id: user_id}
      }]
    }
  }
}

暂无
暂无

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

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