使用json文件在elasticsearch中定义映射

时间:2015-05-17 11:30:05

标签: json elasticsearch

我正在尝试使用json文件来定义每个索引的默认映射。这就是我想要做的事情:

/usr/share/elasticsearch/config/default-mapping.json

{
    "item": {
        "properties": {
            "uuid": {"type": "string", "store": "yes", "index": "no"},
            "title": {"type": "string", "store": "yes", "boost": 5,
                      "index": "analyzed", "analyzer": "english"},
            "description": {"type": "string", "store": "yes", "boost": 3,
                            "index": "analyzed", "analyzer": "english"},
}

当我尝试查询index_test elasticsearch索引时,我得到了这个:

curl -XGET 'http://...:9200/index_test/_mapping'
{"index_test":{"mappings":{}}}

我使用了这里的文档。

https://www.found.no/foundation/elasticsearch-mapping-introduction/

3 个答案:

答案 0 :(得分:2)

您可以使用索引的默认配置(索引设置,映射等)创建index template

  1. 为此,请将default-mapping.json文件的内容更改为某些内容 像:

    {
        "template_1" : {
            "template" : "*",
            "mappings" : {
                "type" : {
                    "properties" : {
                        "uuid" : {
                            "type" : "string",
                            "store" : "yes",
                            "index" : "no"
                        },
                        "title" : {
                            "type" : "string",
                            "store" : "yes",
                            "boost" : 5,
                            "index" : "analyzed",
                            "analyzer" : "english"
                        },
                        "description" : {
                            "type" : "string",
                            "store" : "yes",
                            "boost" : 3,
                            "index" : "analyzed",
                            "analyzer" : "english"
                        }
                    }
                }
            }
        }
    }
    
  2. 将default-mapping.json文件移至 / usr / share / elasticsearch / config / templates目录
  3. 创建新索引

    POST /newindex
    
  4. 新创建的索引的映射:

    {
        "newindex" : {
            "mappings" : {
                "type" : {
                    "properties" : {
                        "description" : {
                            "type" : "string",
                            "boost" : 3,
                            "store" : true,
                            "analyzer" : "english"
                        },
                        "title" : {
                            "type" : "string",
                            "boost" : 5,
                            "store" : true,
                            "analyzer" : "english"
                        },
                        "uuid" : {
                            "type" : "string",
                            "index" : "no",
                            "store" : true
                        }
                    }
                }
            }
        }
    }
    
  5. 希望这会对你有所帮助。

答案 1 :(得分:2)

假设您已经创建了索引index_test,则需要执行以下操作(如链接中所示):

$ curl -XPUT 'http://localhost:9200/index_test/my_type/_mapping' -d '
{
  "my_type": {
    "properties": {
      "uuid": {
        "type": "string",
        "store": "yes",
        "index": "no"
      },
      "title": {
        "type": "string",
        "store": "yes",
        "boost": 5,
        "index": "analyzed",
        "analyzer": "english"
      },
      "description": {
        "type": "string",
        "store": "yes",
        "boost": 3,
        "index": "analyzed",
        "analyzer": "english"
      }
    }
  }
}

'

重要的一点是要注意有效负载中的字段对应于类型名称(通常我使用了my_type)。

使用GET上的url:9200/index_test/_mapping/my_type?pretty进行验证。

问候 FRICKE

答案 2 :(得分:0)

您的JSON文档无效。它应该是:

{
    "my_type": {
        "properties": {
            "uuid": {
                "type": "string",
                "store": "yes",
                "index": "no"
            },
            "title": {
                "type": "string",
                "store": "yes",
                "boost": 5,
                "index": "analyzed",
                "analyzer": "english"
            },
            "description": {
                "type": "string",
                "store": "yes",
                "boost": 3,
                "index": "analyzed",
                "analyzer": "english"
            }
        }
    }
}

我建议您在修改映射时始终检查JSON文档。 当您将无效的JSON文档作为映射

发送时,ElasticSearch将忽略您的映射并且不会提示您出现任何错误

JSON验证器网站:http://jsonlint.com/