微信登录

微信登录

因恶意注册过多,目前只支持微信模式
正在播放:结合官方教程一起搞定 Elasticsearch 核心基础
发布于: 2019.07.31
张三丰 2019.08.05 01:35
ik中文分词插件安装了,docker容器重启了,但是系统还是把中文分为每一个中文汉字了,
根据百度搜索,修改默认分词器的代码:

PUT /users
{
    "settings" : {
        "index" : {
            "analysis.analyzer.default.type": "ik_max_word"
        }
    }
}
执行结果:
{
  "error": {
    "root_cause": [
      {
        "type": "resource_already_exists_exception",
        "reason": "index [users/lsmbG-YgQh2uXZL9Lwnbvw] already exists",
        "index_uuid": "lsmbG-YgQh2uXZL9Lwnbvw",
        "index": "users"
      }
    ],
    "type": "resource_already_exists_exception",
    "reason": "index [users/lsmbG-YgQh2uXZL9Lwnbvw] already exists",
    "index_uuid": "lsmbG-YgQh2uXZL9Lwnbvw",
    "index": "users"
  },
  "status": 400
}

================
该怎么解决这个问题呢?
张三丰 2019.08.05 01:39
ik 的github提供的设置方式:
POST /users/_mapping
{

        "properties": {

            "user_name": {

                "type": "text",

                "analyzer": "ik_max_word",

                "search_analyzer": "ik_smart"

            }

        }



}

执行结果依然报错:
{
  "error": {
    "root_cause": [
      {
        "type": "illegal_argument_exception",
        "reason": "Mapper for [user_name] conflicts with existing mapping:\n[mapper [user_name] has different [analyzer]]"
      }
    ],
    "type": "illegal_argument_exception",
    "reason": "Mapper for [user_name] conflicts with existing mapping:\n[mapper [user_name] has different [analyzer]]"
  },
  "status": 400
}

===============

我应该如何设置,使用ik分词器替代默认的分词器呢?
张三丰 2019.08.05 02:00
发现设置分词解析器的时候,必须在添加数据之前,如果索引已经有数据,设置会失败。
那么请问,针对已有数据的索引(例如:article),一开始使用的是默认分词器,现在想替换为Ik分词器有什么办法吗?
codinget 2019.08.05 07:17
这个肯定要先添加分词器啊,因为提交数据就是交给es建索引的过程,建索引首先要分词,不使用中分的话他就会使用默认的分词器。对于已经有的索引,批量删了重新索引就行了,视频里介绍批量处理的方法了
张三丰 2019.08.06 01:04
IK中文分词插件,针对中文 词组 解析的比较好,但是如果查询单个汉字,是查询不到数据的。
我看了官方的issue,说是单个中文字,如果要创建索引,后台的负担会非常重,默认不支持单个字查询。
不知道有没有其他解决办法?
是否使用了ik中文分词插件,就无法查询单个中文字了呢?
codinget 2019.08.06 06:21
你前边自己都把答案回复的很完美了,分词的意义就在于此,如果允许所有单字都建索引那就压根不需要分词了,也不是完全不能单字。不要纠结这个东西,分词的时候分词器是根据词典分的,词典也分种类,有的规模小,有的规模大,大部分项目都是选择规模小的,为的就是少建点儿索引,让搜索系统效率更高,节省计算资源,没必要太把搜索当回事,大部分项目中,它就起个辅助作用,不是主角
张三丰 2019.08.07 12:54
悲剧了,请允许我再提一个问题
1.我创建了索引,设置了location的type为  geo_point,  (这个geo_point 可以随意定义?还是有什么依据和要求?我没搞明白这个相当于外键的类型,从哪里来的?)
2.我填充数据
demo数据
{
  "name":"儿童" ,
  "tag":"家人",
  "remark":"带有外键的数据测试" ,
  "location":{
    "lat":100.123502,
    "lot":214.023145
  }
}

3.报错了:
    {
      "index" : {
        "_index" : "tb_mobile_asset",
        "_type" : "_doc",
        "_id" : "nEfUZ2wBrsE94XreyXgQ",
        "status" : 400,
        "error" : {
          "type" : "mapper_parsing_exception",
          "reason" : "failed to parse field [location] of type [geo_point]",
          "caused_by" : {
            "type" : "parse_exception",
            "reason" : "field must be either [lat], [lon] or [geohash]"
          }
        }
      }
    },
codinget 2019.08.07 09:27
低级错误了,看来晚上熬夜精力确实容易眼花,原因提示的很清楚 "reason" : "field must be either [lat], [lon] or [geohash]" ,你的demo数据不对 “lot”肯定是不行的,得符合字段要求才行
爱laravel 2019.08.13 10:58
laravel分布式存储,像fastdfs的解决方案来一期视频
yang 2019.12.21 05:28
老哥 你那个 多刷新 几次 就进入 下雪那个页面了, 是 nginx 限流么, 还是 代码层面的, 在 laravel 中间件种 进行限制吗
codinget 2019.12.21 06:13
代码限制,laravel文档中有这个东西
标 题
编程原力 京ICP备17045322号-2
版权所有, 侵权者追究法律责任