【问题标题】:Elastic-search: Search for a specific record without scrolling through all the data弹性搜索:搜索特定记录而不滚动浏览所有数据
【发布时间】:2019-03-08 07:01:08
【问题描述】:

问题:在弹性搜索中遍历超过 10,000 个结果以进行搜索查询。

无论如何,我们是否可以在不遍历/检索整个弹性搜索数据库的情况下搜索特定项目。我遇到了滚动,但这是一项内存密集型任务,因为它会在我的情况下获取所有不必要的数据。

【问题讨论】:

  • 您需要为您的问题添加更多上下文。你能给我们一个你想检索哪个文件的例子吗?因为基本上你当然可以在elasticsearch中搜索特定的记录,只是你的查询需要足够具体=)
  • 嘿皮埃尔,我的弹性搜索数据中有多个存储库,我想针对一个存储库检索/滚动所有数据,比如说由组织组成的 OrganizationSearchRepository。我已成功滚动浏览弹性搜索中的“所有”文档,但我只需要针对此特定存储库获取记录。为此,我正在使用弹性搜索滚动 API。它返回当前弹性搜索中的所有数据
  • 那么你应该在你的查询中添加一个过滤器。什么是组织文件的判别数据?
  • 无法弄清楚如何添加该过滤器,目前我正在使用返回所有对象的 API 中的“matchAllQuery”。我已经尝试使用 term 和 typeQuery 来检索仅对该特定类有效但无法正常工作的数据
  • 你应该先阅读 elasticsearch 简介elastic.co/guide/en/elasticsearch/reference/current/…

标签: elasticsearch search scroll pagination elasticsearch-aggregation


【解决方案1】:

在弹性搜索查询中使用过滤子句过滤掉特定的文档。

GET index/_search
 {
 "query": {
 "bool": {
  "filter": {
    "match":{
      "field":"value"
    }
  }
}
}
}

【讨论】:

    【解决方案2】:

    从您的问题中,我了解到,您需要基于特定领域的记录。 所以在那种情况下, 您可以通过使用以下查询点击弹性 Db 来获得结果:

    GET /_search?q={FieldName}:{FieldValue}
    
    

    【讨论】:

      猜你喜欢
      • 2018-03-18
      • 1970-01-01
      • 2014-10-18
      • 2016-11-05
      • 2012-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多