使用 Elasticsearch 在单个文档中搜索
Search within single document using Elasticsearch
如果我想搜索一个索引,我可以使用:
$curl -XGET 'X/index1/_search?q=title:ES'
如果我想搜索文档类型,我可以使用:
$curl -XGET 'X/index1/docType1/_search?q=title:ES'
但是如果我想搜索特定文档,这不起作用:
$curl -XGET 'X/index1/docType1/documentID/_search?q=title:ES'
是否有解决此问题的简单方法,以便我可以在单个文档而不是整个索引或整个文档类型中进行搜索?为了解释我为什么需要这个,我必须进行一些资源密集型查询才能找到我要找的东西。找到我需要的文档后,我实际上不需要整个文档,只需要与查询匹配的突出显示部分。但我不想将所有突出显示的命中存储在内存中,因为我可能几个小时都不需要它们,有时它们会占用很多 space(我也不想将它们写入磁盘).我宁愿存储一个文档 ID 列表,这样当我需要文档的突出显示部分时,我可以只对 特定文档 运行突出显示的查询并取回突出显示的部分。在此先感谢您的帮助!
您可以将文档的 ID 作为字段编制索引,然后在查询时将唯一的文档 ID 作为术语包含在内,以将结果范围缩小到该单个文档。
'$curl -XPOST 'X/index1/docType1/_search' -d '{
"query": {
"bool": {
"must":[
{"match":{"doc":"223"}},
{"match":{"title":"highlight me please"}}
]
}
}
}'
您可以使用 Ids Query in Elasticsearch to search on a single document. Elasticsearch by default, indexes a field called _uid,它是 type 和 id 的组合,这样它可用于查询、聚合、脚本和排序。
所以你需要的查询如下
curl -XGET 'X/index1/_search' -d '{
"query": {
"bool": {
"must": [
{
"match": {
"title": "ES"
}
},
{
"ids": {
"type" : "docType1",
"values": [
"documentID"
]
}
}
]
}
}
}'
如果您需要搜索多个文档,则在 ids 查询的值数组中指定 doc_ids。
如果我想搜索一个索引,我可以使用:
$curl -XGET 'X/index1/_search?q=title:ES'
如果我想搜索文档类型,我可以使用:
$curl -XGET 'X/index1/docType1/_search?q=title:ES'
但是如果我想搜索特定文档,这不起作用:
$curl -XGET 'X/index1/docType1/documentID/_search?q=title:ES'
是否有解决此问题的简单方法,以便我可以在单个文档而不是整个索引或整个文档类型中进行搜索?为了解释我为什么需要这个,我必须进行一些资源密集型查询才能找到我要找的东西。找到我需要的文档后,我实际上不需要整个文档,只需要与查询匹配的突出显示部分。但我不想将所有突出显示的命中存储在内存中,因为我可能几个小时都不需要它们,有时它们会占用很多 space(我也不想将它们写入磁盘).我宁愿存储一个文档 ID 列表,这样当我需要文档的突出显示部分时,我可以只对 特定文档 运行突出显示的查询并取回突出显示的部分。在此先感谢您的帮助!
您可以将文档的 ID 作为字段编制索引,然后在查询时将唯一的文档 ID 作为术语包含在内,以将结果范围缩小到该单个文档。
'$curl -XPOST 'X/index1/docType1/_search' -d '{
"query": {
"bool": {
"must":[
{"match":{"doc":"223"}},
{"match":{"title":"highlight me please"}}
]
}
}
}'
您可以使用 Ids Query in Elasticsearch to search on a single document. Elasticsearch by default, indexes a field called _uid,它是 type 和 id 的组合,这样它可用于查询、聚合、脚本和排序。
所以你需要的查询如下
curl -XGET 'X/index1/_search' -d '{
"query": {
"bool": {
"must": [
{
"match": {
"title": "ES"
}
},
{
"ids": {
"type" : "docType1",
"values": [
"documentID"
]
}
}
]
}
}
}'
如果您需要搜索多个文档,则在 ids 查询的值数组中指定 doc_ids。