240 发简信
IP属地:台湾
  • 另外关于第三点 “增大 threadpool.index.queue_size” 应该也是没有用的
    索引时的并发量是跟shard的数量对应的,但是不会超过本机的cpu 核的个数。
    因为es里面不管是BULK, 还是INDEX的threadPool,线程数都是fix的,即availableProcessors(貌似可以通过配置手动修改,没设默认就是机器的cpu核数,且不超过32)
    而这个threadpool.index.queue_size,只不过是线程池等待任务队列的大小。默认50,若索引时es消化不过来,这个等待任务超过了队列大小,es会直接拒绝请求,抛出EsRejectException。

    如何提高ElasticSearch 索引速度

    我Google了下,大致给出的答案如下: 使用bulk API 初次索引的时候,把 replica 设置为 0 增大 threadpool.index.queue_size ...

  • 关于version这块,一般是不会影响索引速度的吧。
    一般情况下索引数据时你是不会自己提供id的,这时es会为每条数据自动生成一个base64 UUID,而且好像还是字典序上的自增,这个时候记录索引默认是create,这根本就不存在版本冲突和加锁的问题吧。
    如果你是指索引的meta state的版本号。这个版本号一般只会在发生了field mapping的更新,setting的更新时版本号才会更新。当你海量数据导入的时候,数据的列总不会每条数据都不一样吧?所以这个版本号也是不会频繁更新的。
    不知道我有没有理解正确你的意思?

    如何提高ElasticSearch 索引速度

    我Google了下,大致给出的答案如下: 使用bulk API 初次索引的时候,把 replica 设置为 0 增大 threadpool.index.queue_size ...