zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    6.让代码更具可读性
    5构造函数和析构函数
    4面向对象之类的继承
    3隐形的指针
    2面向对象之类的封装
    od快捷键
    1.纠结的c++
    101宏定义的其他用法
    100解剖宏定义函数
    99,printf scanf手动功能实现
  • 原文地址:https://www.cnblogs.com/yks43/p/14347030.html
Copyright © 2011-2022 走看看