elasticsearch 如何通过别名按_id申请单张单据?

iyfamqjs  于 7个月前  发布在  ElasticSearch
关注(0)|答案(5)|浏览(47)

如果别名中所有索引的所有键都是唯一的(这是一个外部保证),是否可以通过查询别名来请求单个文档的id?

tsm1rwdh

tsm1rwdh1#

是的,查询跨多个索引的别名与查询一个索引的工作方式相同。
只需对别名执行以下查询:

POST my_alias_name/_search
{
    "filter":{
        "term":{"_id": "AUwNrOZsm6BwwrmnodbW"}
    }
}

字符串
编辑:GET操作不是真实的搜索,不能在跨多个索引的别名上执行。因此,以下查询实际上是不允许的:

GET my_alias_name/my_type/AUwNrOZsm6BwwrmnodbW

9rbhqvlz

9rbhqvlz2#

在Elasticsearch 5.1中,查询看起来像这样:

GET /my_alias_name/_search/
{
    "query": { 
        "bool": {
         "filter": {
                "term": {
                   "_id": "AUwNrOZsm6BwwrmnodbW"
                }
            }
        }
    }
}

字符串

5kgi1eie

5kgi1eie3#

在Elasticsearch 8.2 Doc之后,您可以使用GET API检索单个文档:

GET my-index-000001/_doc/0

字符串

jmp7cifd

jmp7cifd4#

7.2 version Docs建议:

GET /_search
{
    "query": {
        "ids" : {
            "values" : ["1", "4", "100"]
        }
    }
}

字符串
响应应该如下所示:

{
  "took": 0,
  "timed_out": false,
  "_shards": {
    "total": 2,
    "successful": 2,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 1.0,
    "hits": [
      {
        "_index": "indexwhatever",
        "_type": "_doc",
        "_id": "anyID",
        "_score": 1.0,
        "_source": {
          "field1": "value1",
          "field2": "value2"
        }
      }
    ]
  }
}

bbmckpt7

bbmckpt75#

如果你想用curl找到一个有内部id的文档:

curl -X GET 'localhost:9200/_search?q=id:42&pretty'

字符串

相关问题