一、索引的原理
参考文档:Elasticsearch倒排索引结构
二、索引的创建和删除
索引创建可以使用curl命令,或者在head插件的可视化网页上,也可以使用工具,例如postman。我使用的是postman。(Windows环境下)
- 使用curl命令
- 首先是配置两个参数:number_of_shards参数是表示索引的分片数,number_of_replicas参数表示索引的备份分片数。索引的一些其他的参数设置可以参考官网
- 然后是配置索引的mapping,mapping中字符串类型的字段有一个index选项,之前的版本有三个值
- analyzed: 默认。这个值,ES分析器会将该字段所有字符转为小写,并将字符串分解为单词。匹配时对每个词进行完整匹配。
- not_analyzed: 不分析,整个字符串被当做一个整体,进行精准匹配。
- no: 不在该字段上建索引。
- 6.x的版本以后没有了string类型,可以将字段设置为keyword,表示进行精确分配。例如下面的author字段。而index选项只能设置是或者否。否表示不在该字段设置索引。
curl -XPUT "localhost:9200/index_name/" -d
"{
\"settings\": {
\"index\": {
\"number_of_shards\": 5,
\"number_of_replicas\": 1
}
},
\"mappings\": {
\"properties\": {
\"date\": {
\"format\": \"yyyy-MM-dd\",
\"type\": \"date\"
},
\"publish\": {
\"type\": \"string\",
\"index\": \"false\"
},
\"name\": {
\"type\": \"text\"
},
\"author\": {
\"type\": \"keyword\"
}
}
}
}"
注:在7.x版本里,创建索引设置mappings(映射,即数据将会是什么结构)时不能指定类型,默认是_doc;具体有关映射的内容可以参考官方文档
-
使用postman,这种更直观,写json更方便,还能实时发现自己脚本里的错误。
注:索引中设置分词器、slice数量等其他配置等以后用到了再发文更新
三、索引中数据的查询
- 这里简单展示两种查询的方法,term是精确匹配,而match可以匹配带有该字符串的数据。具体有什么区别可以自己实践感受一下。
1.使用match方法查询 - 使用通配符和正则表达式查询可参考:博客(https://blog.csdn.net/dm_vincent/article/details/42024799)
- 具体的查询索引中数据的方法可参考官方文档
注:后面的文再更新更深入的一些搜索