当前位置: 首页 > 面试题库 >

ElasticSearch在搜索中返回文档,但不在GET中返回文档

吴品
2023-03-14
问题内容

我正在搜索索引中的文档,然后尝试通过获取其中的一些文档_id。尽管收到了一组结果,但是某些文档无法通过简单的get来检索。更糟糕的是,我可以通过URI搜索获得相同的文档,其中?_id:<the id>

例如,运行一个简单的GET

curl -XGET 'http://localhost:9200/keepbusy_process__issuer_application/KeepBusy__Activities__Activity/neHSKSBCSv-OyAYn3IFcew'

给我结果:

{
  "_index" : "keepbusy_process__issuer_application",
  "_type" : "KeepBusy__Activities__Activity",
  "_id" : "neHSKSBCSv-OyAYn3IFcew",
  "exists" : false
}

但是,如果我使用相同的_id进行搜索:

curl -XGET 'http://localhost:9200/keepbusy_process__issuer_application/KeepBusy__Activities__Activity/_search?q=_id:neHSKSBCSv-OyAYn3IFcew'

我得到了预期的结果:

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 1.0,
    "hits": [
      {
        "_index": "keepbusy_process__issuer_application",
        "_type": "KeepBusy__Activities__Activity",
        "_id": "neHSKSBCSv-OyAYn3IFcew",
        "_score": 1.0,
        "_source": {
          "template_uid": "KeepBusy__Activities__Activity.create application",
          "name": "create application",
          "updated_at": "2014-01-08T10:02:33-05:00",
          "updated_at_ms": 1389193353975
        }
      }
    ]
  }
}

我正在通过Stretcher ruby​​ API索引文档,索引后立即进行刷新。我的本地设置是 2个节点 。我正在运行 v0.90.9

在日志中,没有任何明显的原因会导致失败。我已经重新启动了群集,并且一切似乎都可以正常启动,但是结果是相同的。

是否有我所缺少的东西,或者可以以某种方式进一步诊断此问题?


问题答案:

当使用非默认路由对文档建立索引(在父/子文档的情况下,显式设置或从父ID扣除)时,通常会发生此问题。如果是这种情况,请尝试在您的请求中指定正确的路由。



 类似资料:
  • elasticsearch实例的一些背景: 一个节点,在一台机器上 特定索引由大小为1.23TB的26亿文档组成 索引被分成4个碎片。 堆大小设置为30 GB 服务器有256GB内存和40个内核。 Elasticsearch(版本1.4.3)是这个服务器上唯一运行的东西 我想返回所有具有特定名称的文档。属性名称已映射为: 我尝试过使用不同类型的搜索;过滤器、查询字符串、术语。结果都一样。当前查询如

  • 问题内容: 我用如下猫鼬定义了一个模型: 然后创建了一个用户,可以通过mongo控制台完美地找到它,如下所示: 但是,当我尝试通过带有mongoose的node.js访问此对象时,要检索的对象不是此类文档,而是包装器: 这段代码… 从console.dir(doc)产生此输出… 因此,密码将不匹配,因为doc.password未定义。 为什么会这样呢? 问题答案: 这正是包裹猫鼬对象的猫鼬的目的。

  • 问题内容: 我正在使用并希望elasticsearch返回搜索的单词而不仅仅是点击。当我搜索单词并且模糊搜索找到单词时,我想知道是谁找到了它。 数据: 查询: 该查询将返回,但不知道是否找到它。 有人知道该怎么做或一个主意吗?我希望输出为。 问题答案: 您可以为此命名查询,方法是为每个查询命名。在结果中,每个匹配都将包含一个数组,其中包含匹配的查询的名称(例如及以下)。

  • 问题内容: 我想获取更新的文档。这是我的原始代码,它成功更新但没有返回文档。 我使用了toArray函数,但是这给出了错误“没有提供的回调就不能使用writeConcern”: 有任何想法吗? 问题答案: 只会向自己的回调报告受影响的文档数。 要在修改时检索文档,可以改用(以前称为)。 更新:在mongoDB中执行时,请使用;如果使用mongoose,则可以使用。以上是Node.js驱动程序。 注

  • 我需要向MongoDB插入一个文档并返回新插入的文档。我用了db。集合(“集合名称”)。insertOne(“要插入的数据”)。然后((res)= 错误:未定义ops。 insertOne只返回插入文档的_id,而不是整个文档☹ 但早些时候,它通常返回整个文档。我使用了mongoclient而不是mongoose,在mongoose中它返回整个文档,但我不喜欢使用mongoose。

  • 问题内容: 我想知道为什么搜索特定术语会返回索引的所有文档,而不返回包含所请求术语的文档。 这是索引以及我的设置方法:(使用elasticsearch头插件浏览器界面) 然后我添加了一些文档: 因此,现在触发“ plaat”搜索时,人们会希望搜索会返回包含“ plaatstaal”的文档。 但是为我节省了更多的搜索,elasticsearch会恢复所有文档的大小,无论其文本内容如何。我在这里想念什