如何通过elasticsearch api创建

常见概念

Elasticsearch集群可以包含多个索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包含多个文档(documents)(行),然后每个文档包含多个字段(Fields)(列)。

经验技巧

Mapping中的一些关键设置字段含义介绍:


——all:这是一个特殊的字段,你可以理解为他是一个伪全文字段。当你在一个Type(表)中想要检索一个信息,然而你可能都不知道这个表中各个字段存储的是什么,都有什么含义,这个时候在——all的字段中进行搜索是能解决你的问题的。

——source

  • compress:描述了存储在type中documents是否进行压缩。

      可以显著的减少索引文件的空间
    
  • enabled:描述了type中的documents是否进行存储。

     这个属性最好在开发环境中,设置成true,它能很方便我们对索引的原数据进行查询。它会完整的记录索引文件的内容。
    
  • dunamic:是否动态创建mapping。

          es的type结构是松散的,它是支持你主动动态创建,当你在index一条document的时候,
          如果你有一些字段并不存在在现有的properties中,es会自动推动你的字段属性并帮你
          添加进mapping中,从而使你的文档任何时候都可以index成功。但是在实际的生产环境
          中我们还是禁用了这个属性,这样当时在有类似的操作时候,你的索引行为就会失败。
    

注意事项

1.在一个Index下的不同Type中,如果你有同名的field字段,务必保持在不同的type下你的同名字段的属性一定要是一致的

2.Mapping:是对索引结构的描述,它对索引的创建和检索都是一个支撑作用,一经确定的mapping就不允许修改,因为mapping变化索引文件索引数据必然就需要跟着变更。索引不要轻易修改你的mapping的设置,它会导致你整个索引数据的丢失**

实例

创建索引

ES允许你在创建索引的时候指定一些索引需要的必要设置,并提供了相应的API支持。

索引设置

每个索引在创建的时候都可以都它自己独立的设置参数,你也可以不设置它会有默认的填充。

  • 无参创建索引:

    $ curl -XPUT 'http://localhost:9200/Recruitment/'
    
  • 有参创建索引:

    $ curl -XPUT 'http://localhost:9200/Recruitment/' -d '
    index :
      number_of_shards : 3 
      number_of_replicas : 2 
    '
    
  • number_of_shards的默认值是:5

  • number_of_replicas的默认值是:1

    Mappings

mappings可以简单的理解为是对Type(表)结构的描述。它分别描述了Type自身的一些基本信息,type包含了哪些字段,这些字段分别的属性是什么,字段类型,是否分词等等信息。

创建Mapping的API

curl -XPOST localhost:9200/Recruitment -d '{
"settings" : {
    "number_of_shards" : 1
},
"mappings" : {
    "ApplicantProfile" : {
        "properties" : {
            "Name" : { "type" : "string", "analyzer" : "standard" },
             "Email" : { "type" : "string" },
              .......
        }
    }
}

}'