创建索引
自动创建
ES与MongoDB类似,在创建文档时,如果对应的索引不存在,ES会自动帮我们创建索引
PUT http://localhost:9200/blog/article/1
# 建立blog,在blog下建立article类型,在类型下建立文档1
{
"title":"New version of Elasticsearch released!",
"content":"...",
"tags":[
"announce",
"elasticsearch",
"release"
]
}
其中blog和article由ES自动创建,索引的自动创建功能可以在elasticsearch.yml中关闭,只需要设置action.auto_create_index: false
手动创建索引
手动创建索引的好处在于可以设置分片和副本数,一般默认是5分片1副本
PUT http://localhost:9200/blog
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 2
}
}
删除索引
DELETE http://localhost:9200/blog
配置映射
ES是一个无模式的搜索引擎,它不像关系型数据库一样需要事先定义表来描述数据,但ES也支持事先对数据的映射。索引是有多个类型的,利用映射来定义类型
{
"mappings": {
"post":{
"properties": {
"id":{"type":"long","store":"yes","precision_step":“0”},
"name":{"type":"string","store":"yes","index":"analyzed"},
}
}
}
}
上述json就是定义了一个post类型,在类型中定义了两个字段,字段里面可以定义字段行为和特有的属性,常见的属性如下
1. 类型(type)
2. index:可选择的值是analyzed和no,如果是no则表示字段可以被搜索
3. store:可选值为yes和no,指定了该字段的原始值是否被写入索引中。
4. boost:文档中该字段的重要性
开箱即用的分析器
1. standard:方便大多数欧洲语言的标准分析器
2. simple:这个分析器基于非字母字符来分离文本,并转换为小写形式
3. whitespace:这个分析器基于空格符来分离所提供的值
4. stop:与simple类似,不过能提供停止词
5. keyword:这是一个非常简单的分析器,只传入提供的值
自定义分析器
{
"settings":{
"index":{
"analysis":{
"analyzer":{
"en":{
"tokenizer":"standard",
"filter":[
"asciifolding",
"lowercase",
"ourEnglishFilter"
]
}
},
"filter":{
"ourEnglishFilter":{
"type":"kstem"
}
}
}
}
}
}
定义一个名为en的分析器。每个分析器都由一个分析器和多个过滤器构成,这样在定义映射时可以应用en这个分析器
使用这个分析器对“robots cars”分析
GET http://localhost:9200/posts/_analyze?pretty&field=post.name -d 'robots cars'