用于多种类型的弹性搜索的映射

时间:2015-02-26 23:43:37

标签: types elasticsearch mapping

我正在尝试为每个数据源创建一个具有多种类型的索引。

以下映射确实为一种类型创建了映射:

curl -XPUT localhost:9200/test -d '{
    "settings" : {
        "number_of_shards" : 1
    },
    "mappings" : {
        "type1" : {
            "_source" : { "enabled" : false },
            "properties" : {
                "field1" : { "type" : "string", "index" : "not_analyzed" }
            }
        }
    },
    "mappings" : {
        "type2" : {
            "_source" : { "enabled" : false },
            "properties" : {
                "source1" : { "type" : "string", "index" : "not_analyzed" }
            }
        }
    }
}'

当我运行时:

curl -X GET 'http://localhost:9200/test/tpe1/_mapping?pretty=true'

没有显示任何内容。

如何在弹性搜索中为多种类型创建映射?

2 个答案:

答案 0 :(得分:0)

虽然可能有一种方法可以在一次调用中执行此操作,但在多次调用中执行此操作同样容易,这样可以使事情更加分离。

PUT hilden1

PUT hilden1/type1/_mapping
{
  "properties": {
    "value1": {
      "type": "string"
    }
  }
}

PUT hilden1/type2/_mapping
{
  "properties": {
    "value2": {
      "type": "string"
    }
  }
}


GET hilden1/_mapping

设置2个调用的映射还有一个额外的好处,即不会影响同一索引中的第3个类型。

答案 1 :(得分:0)

首先,您将应用映射到弹性搜索

curl -XPUT localhost:9200/index/_setting -d @indexsetting.json

为Type1和Type2 Mapping创建一个两个json文件 Mapping1.json:

{
"type1":{
"properties" : {
 "field1" : { "type" : "string", "index" : "not_analyzed" } 
}}} 

Mapping2.json

{
"type2":{
"properties" : {
 "field1" : { "type" : "string", "index" : "not_analyzed" } 
}}} 

然后,您将逐个执行以下查询

curl -XPUT localhost:9200/index/type1/_mapping -d @mapping1.json
curl -XPUT localhost:9200/index/type2/_mapping -d @mapping2.json

这是在弹性搜索中创建索引和Mappping的正确方法。