ES中文分词拼音一箭双雕|yii2 es中文分词|拼音分词|ik

实用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

    1. 新建一个替代index(youdu_test)
    1. 获取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"
                    },
                    
                }
            }
        }
    }
}
    1. 创建youdu_test的mapping
      将上面截取的{type}部分json去传入和修改
//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"
                    },
                  
                }
            }
}
    1. 同步youdu的数据到youdu_test
//query结构
POST $domain+$port/_reindex
//示例
POST http://192.168.0.202:9200/_reindex
{
 "source": {
     "index": "youdu"
 },
 "dest": {
     "index": "youdu_test"
 }
}
中文分词和拼音分词实例
还有 78% 的精彩内容
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
支付 ¥1.00 继续阅读

友情链接更多精彩内容