elasticsearch - 将 Elasticsearch 结果范围限定为特定 ID

标签 elasticsearch elasticsearch-dsl elasticsearch-rails

我对 Elasticsearch DSL 有疑问。

我想进行全文搜索,但将可搜索记录的范围限定为特定的数据库 ID 数组。

在 SQL 世界中,它的功能等同于 WHERE id IN(1, 2, 3, 4)

我一直在研究,但我发现 Elasticsearch 查询 DSL 文档有点晦涩难懂且缺乏有用的示例。谁能指出我正确的方向?

最佳答案

这是一个可能适合您的示例查询。这假定 _all 字段在您的索引上启用(这是默认设置)。它将对索引中的所有字段进行全文搜索。此外,通过添加的 ids 过滤器,查询将排除任何其 id 不在给定数组中的文档。

{
  "bool": {
    "must": {
      "match": {
        "_all": "your search text"
      }
    },
    "filter": {
      "ids": {
        "values": ["1","2","3","4"]
      }
    }
  }
}

希望这对您有所帮助!

关于elasticsearch - 将 Elasticsearch 结果范围限定为特定 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34912119/

相关文章:

ubuntu - Nifi 连接 Elasticsearch 时出现错误

elasticsearch - 将数据索引到 elasticsearch 时出现批量 API 错误

elasticsearch - 如何为 elasticsearch-dsl 使用复合聚合

ruby-on-rails - 如何在Elasticsearch中搜索多代

elasticsearch - 计算事件之间的时间

python - Elasticsearch-dsl 嵌套查询

elasticsearch - Elasticsearch多索引查询和过滤

elasticsearch - 如何合并Elasticsearch Rails gem的两个或多个结果?

ruby-on-rails - 为什么我们使用诸如solr, Elasticsearch 或任何其他搜索引擎之类的搜索引擎,却却拥有诸如ransack之类的事件记录 gem

elasticsearch - 为什么通过id进行简单查询会导致超时异常?