那工作中实际碰到的情况哈,这个比较麻烦,因为Elasticsearch集群本身还是用的阿里云的,不是自建的,很烦,后台提供的功能基本上对解决red状态没有任何作用。
那如何不扩容的情况下解决问题呢?基本流程如下:
- 首先你得能访问Elastic[……]
那工作中实际碰到的情况哈,这个比较麻烦,因为Elasticsearch集群本身还是用的阿里云的,不是自建的,很烦,后台提供的功能基本上对解决red状态没有任何作用。
那如何不扩容的情况下解决问题呢?基本流程如下:
这个问题是Java栈的一个同事提出来的,按道理游标本身多线程处理完全可以的啊,毕竟感觉像是Redis scan。
后来深入了解了下,发现对于多线程来说,其实官方有更优雅的姿势对游标scroll进行处理的,随手总结如下:Sliced scroll示[……]
聊聊ElasticSearch修改字段类型的方法
众所周知,ElasticSearch 修改字段类型一般操作是删索引重建索引。但这样的操作意味着数据会丢,重建索引如果数据量庞大,你需要耗费更多时间。当然,为了规避问题,通常会在备用索引进行这样删除重建,但[……]
不是我用,是同事要调整ES的索引,所以作为方案提供方,我需要给出具体如何创建使用分词器。好在,我有json,而同事找到了一篇介绍的博文。
整理如下:创建setting.json,内容如下:
{
"index.max_ngram_diff[......]
这个用法其实如果人工设置索引映射的话,通常是可以规避nested这种复杂类型的,但如果你的上游写入ES用了这样的类型,那么查询的时候是需要指定path的。
示例代码:
{
"query": { "nested&[......]
Elasticsearch 解析器啊,不知道的时候会默认用自己的standard解析器进行。
但是呢,如果你需要按自己指定字符分词解析,是要自定义tokenizer分词器的,类型为:char_group,属性tokenize_on_chars为你要指定的字符串数[……]
Elasticsearch自己创建索引指定解析器分词器细节的时候,字段是可以设置term_vector(词向量)属性的。
这属性默认值是no(默认值),其他可选值:
| No term vectors are stored.(default) |
Elasticsearch7之后默认最多返回10000条数据,其实也很合理,你看下搜索引擎就知道了,也就前两三页有价值,之后的查看率非常低。
那么新版ES如何获取总数呢?这里就引出了一个参数:track_total_hits
。只需要在query、[……]