首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用弹性搜索在单个文档中进行搜索

问使用弹性搜索在单个文档中进行搜索
EN

Stack Overflow用户
提问于 2015-01-06 02:12:32
回答 2查看 2.7K关注 0票数 6

如果我想搜索一个我可以使用的索引:

代码语言:javascript
复制
$curl -XGET 'X/index1/_search?q=title:ES'

如果要搜索文档类型,可以使用:

代码语言:javascript
复制
$curl -XGET 'X/index1/docType1/_search?q=title:ES'

但是,如果我想搜索特定的文档,这是行不通的:

代码语言:javascript
复制
$curl -XGET 'X/index1/docType1/documentID/_search?q=title:ES'

这样我就可以在单个文档中搜索,而不是整个索引或整个文档类型了吗?为了解释为什么我需要这样做,我必须做一些资源密集型的查询,以找到我正在寻找的东西。一旦我找到我需要的文档,我实际上不需要整个文档,只需要与查询匹配的突出显示的部分。但是我不想把所有突出显示的点击都存储在内存中,因为我可能几个小时都不需要它们,有时它们会占用很多空间(我也不想把它们写到磁盘上)。我希望存储一个文档ids列表,这样当我需要文档突出显示部分时,我就可以对特定文档运行突出显示的查询,并返回突出显示的部分。提前感谢您的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-06 02:24:46

您可以将文档的id索引为字段,然后在查询时,将唯一的文档id作为一个术语,将结果缩小到该单个文档。

代码语言:javascript
复制
'$curl -XPOST 'X/index1/docType1/_search' -d '{
    "query": {
        "bool": {
              "must":[
                  {"match":{"doc":"223"}},
                  {"match":{"title":"highlight me please"}}
               ]
        }
   }
}'
票数 8
EN

Stack Overflow用户

发布于 2017-06-26 07:33:51

您可以使用Elasticsearch中的Ids查询搜索单个文档。默认情况下,Elasticsearch对一个名为https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-ids-query.html的字段进行索引,该字段是类型和id的组合,因此可以用于查询、聚合、脚本和排序。

因此,您需要的查询如下

代码语言:javascript
复制
curl -XGET 'X/index1/_search' -d '{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "title": "ES"
          }
        },
        {
          "ids": {
            "type" : "docType1",
            "values": [
              "documentID"
            ]
          }
        }
      ]
    }
  }
}'

如果需要搜索多个文档,则在ids查询中的值数组中指定doc_ids。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27791088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档