实用es的目的:提高搜索速度(mysql),降低服务器负载(cpu和io)
本人实施后效果:
1.负载从80%-100+%(由于是云主机,有时候会飙升到200%多,一般是150%-170%之间)
降低至稳定在10%以下。
2.搜索速度从千万数据的秒级降低至毫秒级(个位数的),也就是10毫秒以下,速度提升560+倍
查看分词结果
//query结构
GET /{index}/{type}/{_id}/_termvectors?fields={field_name}
//示例
GET /youdu_test/books/41286/_termvectors?fields=book_name
sort脚本排序
"sort": {
"_script": {
"type": "string",
"script":{
"inline": "doc['book_author']"
},
"order":"asc"
}
}
修改mapping中的字段类型
此处示例index为:youdu(已存在) youdu_test(未创建)
以下请求的header都为:Content-Type:application/json
- 新建一个替代index(youdu_test)
- 获取youdu的mapping
//query结构
GET $domain+$port/{index}/{type}/_mapping
//示例
GET http://192.168.0.202:9200/youdu/books/_mapping
截取{type}部分json留做后面建立youdu_test的mapping使用,如
{
"youdu": {
"mappings": {
"books": {
"properties": {
"auto_gather": {
"type": "keyword"
},
}
}
}
}
}
- 创建youdu_test的mapping
将上面截取的{type}部分json去传入和修改
- 创建youdu_test的mapping
//query结构
PUT $domain+$port/{index}/{type}/_mapping
{
//json串
}
//示例,更改auto_gather字段的类型为text
PUT http://192.168.0.202:9200/youdu_test/books/_mapping
{
"books": {
"properties": {
"auto_gather": {
"type": "text"
},
}
}
}
- 同步youdu的数据到youdu_test
//query结构
POST $domain+$port/_reindex
//示例
POST http://192.168.0.202:9200/_reindex
{
"source": {
"index": "youdu"
},
"dest": {
"index": "youdu_test"
}
}