如何将文档批量索引到ElasticSearch的默认映射中?

时间:2017-07-19 18:28:34

标签: elasticsearch mapping default bulk

ElasticSearch 5.5的文档没有提供如何使用批量操作将文档索引到索引的默认映射的示例。它也没有说明为什么可能,除非我在文档中的其他地方遗漏了。

ES 5.5文档提供了批量索引的一个明确示例:

POST _bulk
{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } }
{ "field1" : "value1" }

但它也说

  

端点是/ _bulk,/ {index} / _ bulk和{index} / {type} / _ bulk。   当提供索引或索引/类型时,它们将被使用   对于未明确提供它们的批量项目的默认值。

因此,中间端点是有效的,它意味着我a)你必须在索引的每个文档的元数据中明确提供一个类型,或者b)你可以将文档索引到默认映射(“_default_” )。

但我不能让这个工作。

  • 我已经尝试了/ myindex / bulk端点,但没有在元数据中指定类型。

  • 我已尝试使用“_type”:指定“_default_”。

  • 我试过/ myindex / _default_ / bulk。

1 个答案:

答案 0 :(得分:0)

这与_default_映射无关。这是关于回退到您在URL中指定的默认类型。您可以执行以下操作

POST _bulk
{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } }
{ "field1" : "value1" }

但是以下代码段完全相同

POST /test/type1/_bulk
{ "index" : { "_id" : "1" } }
{ "field1" : "value1" }

你可以混合这个

POST foo/bar/_bulk
{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } }
{ "field1" : "value1" }
{ "index" : { "_id" : "1" } }
{ "field1" : "value1" }

在此示例中,一个文档将编入foo索引,一个文档编入test

希望这是有道理的。