• ES踩坑


    分词

    ik分词器

    查看字段的分词情况

    GET /${index}/${type}/${id}/_termvectors?fields=${fields_name}
    

    大小写

    包含英文字母的值建立索引时,默认会把大写转成小写,但是值还是大写,匹配需要用小写

    逗号分词

    数字间不能直接用英文逗号进行分词,考虑其他分词方案,这里最后使用逗号+空格分词

    查询

    term&match&filter

    term

    完全匹配查询,查询条件不会分词,查询条件和对应字段的分词结果对应时才会取出来

    match

    模糊匹配查询,查询条件会分词,查询条件的分词结果和对应字段的分词结果对应时才会取出来

    filter

    过滤匹配查询,完全匹配,与term的区别在于它不会评分,并且有缓存功能,所以filter比较快

    深度分页

    es默认采用的分页方式是 from+ size 的形式,在深度分页的情况下,这种使用方式效率是非常低的,比如from = 5000, size=10,es需要在各个分片上匹配排序并得到5000+10条有效数据,然后在结果集中取最后10条;
    除了效率问题,还有一个无法解决的问题是,es目前支持最大的skip值是max_result_window,默认为 10000 。也就是当 from + size > max_result_window 时,es将返回错误

    解决方案

    1. 业务不需要去做深度分页时,后端前端做限制
    2. 调整max_result_window的值
    3. 使用scroll
  • 相关阅读:
    Linux基础命令:crontab
    linux基础命令:su和sudo
    Linux基础知识:文件权限管理以及umask
    Linux基础命令:useradd和groupadd
    Linux基础命令:more和less
    Linux基础命令:ln
    Linux基础命令:chattr和lsattr
    Linux基础命令:who和w
    vue项目1-pizza点餐系统6-路由精讲之复用router-view
    vue项目1-pizza点餐系统5-全局守卫
  • 原文地址:https://www.cnblogs.com/yks43/p/14347030.html
Copyright © 2020-2023  润新知