如果我想搜索一个我可以使用的索引:
$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'这样我就可以在单个文档中搜索,而不是整个索引或整个文档类型了吗?为了解释为什么我需要这样做,我必须做一些资源密集型的查询,以找到我正在寻找的东西。一旦我找到我需要的文档,我实际上不需要整个文档,只需要与查询匹配的突出显示的部分。但是我不想把所有突出显示的点击都存储在内存中,因为我可能几个小时都不需要它们,有时它们会占用很多空间(我也不想把它们写到磁盘上)。我希望存储一个文档ids列表,这样当我需要文档突出显示部分时,我就可以对特定文档运行突出显示的查询,并返回突出显示的部分。提前感谢您的帮助!
发布于 2015-01-06 02:24:46
您可以将文档的id索引为字段,然后在查询时,将唯一的文档id作为一个术语,将结果缩小到该单个文档。
'$curl -XPOST 'X/index1/docType1/_search' -d '{
"query": {
"bool": {
"must":[
{"match":{"doc":"223"}},
{"match":{"title":"highlight me please"}}
]
}
}
}'发布于 2017-06-26 07:33:51
您可以使用Elasticsearch中的Ids查询搜索单个文档。默认情况下,Elasticsearch对一个名为https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-ids-query.html的字段进行索引,该字段是类型和id的组合,因此可以用于查询、聚合、脚本和排序。
因此,您需要的查询如下
curl -XGET 'X/index1/_search' -d '{
"query": {
"bool": {
"must": [
{
"match": {
"title": "ES"
}
},
{
"ids": {
"type" : "docType1",
"values": [
"documentID"
]
}
}
]
}
}
}'如果需要搜索多个文档,则在ids查询中的值数组中指定doc_ids。
https://stackoverflow.com/questions/27791088
复制相似问题