Elasticsearch7系列-使用小技巧

本文档将会持续更新记录使用ES7的过程中遇到的问题以及各种小技巧,小工具;欢迎各位码又收藏

es与kibana只能使用localhost访问的问题解决

  • elasticsearch

    找到config/elasticsearch.yml文件,配置network.host: 0.0.0.0

  • kibana

    找到config/kibana.yml文件,配置server.host: “0.0.0.0”

ps -ef|grep kibana找不到进程的问题

使用fuser -n tcp 5601找到进程号

es导入本地json文件数据

在json文件路径下执行命令,其中accounts.json为数据文件名

curl -H "Content-Type: application/json" -XPOST "localhost:9200/<indexname>/_bulk?pretty&refresh" --data-binary "@accounts.json"

判断某个索引某个字段某个值时的分词效果

GET /<indexname>/_analyze
{
  "field": "<field1>",
  "text": "Mill Lane"
}

结果说明

如下所示,该索引对Mill Lane分词后的结果是两个词,此时使用term查询时,只有输入这2个值中的一个才有结果

注意:分词后英文会全部转成小写哦

{
  "tokens" : [
    {
      "token" : "mill",
      "start_offset" : 0,
      "end_offset" : 4,
      "type" : "<ALPHANUM>",
      "position" : 0
    },
    {
      "token" : "lane",
      "start_offset" : 5,
      "end_offset" : 9,
      "type" : "<ALPHANUM>",
      "position" : 1
    }
  ]
}

判断某个字段使用某个分词器时的分词效果

使用ik分词器

GET /_analyze
{
  "analyzer": "ik_max_word",
  "text": "中华人民共和国福建省福州市马尾区名称中心铂悦府"
}

结果说明

{
  "tokens" : [
    {
      "token" : "中华人民共和国",
      "start_offset" : 0,
      "end_offset" : 7,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "中华人民",
      "start_offset" : 0,
      "end_offset" : 4,
      "type" : "CN_WORD",
      "position" : 1
    },
    {
      "token" : "中华",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "CN_WORD",
      "position" : 2
    },
    {
      "token" : "华人",
      "start_offset" : 1,
      "end_offset" : 3,
      "type" : "CN_WORD",
      "position" : 3
    },
    {
      "token" : "人民共和国",
      "start_offset" : 2,
      "end_offset" : 7,
      "type" : "CN_WORD",
      "position" : 4
    },
    {
      "token" : "人民",
      "start_offset" : 2,
      "end_offset" : 4,
      "type" : "CN_WORD",
      "position" : 5
    },
    {
      "token" : "共和国",
      "start_offset" : 4,
      "end_offset" : 7,
      "type" : "CN_WORD",
      "position" : 6
    },
    {
      "token" : "共和",
      "start_offset" : 4,
      "end_offset" : 6,
      "type" : "CN_WORD",
      "position" : 7
    },
    {
      "token" : "国",
      "start_offset" : 6,
      "end_offset" : 7,
      "type" : "CN_CHAR",
      "position" : 8
    },
    {
      "token" : "福建省",
      "start_offset" : 7,
      "end_offset" : 10,
      "type" : "CN_WORD",
      "position" : 9
    },
    {
      "token" : "福建",
      "start_offset" : 7,
      "end_offset" : 9,
      "type" : "CN_WORD",
      "position" : 10
    },
    {
      "token" : "省",
      "start_offset" : 9,
      "end_offset" : 10,
      "type" : "CN_CHAR",
      "position" : 11
    },
    {
      "token" : "福州市",
      "start_offset" : 10,
      "end_offset" : 13,
      "type" : "CN_WORD",
      "position" : 12
    },
    {
      "token" : "福州",
      "start_offset" : 10,
      "end_offset" : 12,
      "type" : "CN_WORD",
      "position" : 13
    },
    {
      "token" : "市",
      "start_offset" : 12,
      "end_offset" : 13,
      "type" : "CN_CHAR",
      "position" : 14
    },
    {
      "token" : "马尾区",
      "start_offset" : 13,
      "end_offset" : 16,
      "type" : "CN_WORD",
      "position" : 15
    },
    {
      "token" : "马尾",
      "start_offset" : 13,
      "end_offset" : 15,
      "type" : "CN_WORD",
      "position" : 16
    },
    {
      "token" : "区",
      "start_offset" : 15,
      "end_offset" : 16,
      "type" : "CN_CHAR",
      "position" : 17
    },
    {
      "token" : "名称",
      "start_offset" : 16,
      "end_offset" : 18,
      "type" : "CN_WORD",
      "position" : 18
    },
    {
      "token" : "中心",
      "start_offset" : 18,
      "end_offset" : 20,
      "type" : "CN_WORD",
      "position" : 19
    },
    {
      "token" : "铂",
      "start_offset" : 20,
      "end_offset" : 21,
      "type" : "CN_CHAR",
      "position" : 20
    },
    {
      "token" : "悦",
      "start_offset" : 21,
      "end_offset" : 22,
      "type" : "CN_CHAR",
      "position" : 21
    },
    {
      "token" : "府",
      "start_offset" : 22,
      "end_offset" : 23,
      "type" : "CN_CHAR",
      "position" : 22
    }
  ]
}

安装ik分词器

1、下载与es对应版本的ik分词器插件包,下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases

2、解压放到es安装包的plugins路径底下,根路径取名ik(名字可以任意)

3、重启es

查看是否有bulk queue堆积

GET _cat/thread_pool/bulk?s=queue:desc&v

调优专项

内存设置

1、只能分配机器的一半内存给Elasticsearch。另一半要给Lucene使用

2、机器内存即使很充足,也不要分配内存超过32G给Elasticsearch(小于32G的时候会使用内存对象指针压缩技术)

3、关闭swap,内存交换会强烈影响Elasticsearch性能

官方推荐大小
  • Shard 大小官方推荐值为 20-40GB,一般是30GB

  • 每个GB JVM堆内存支持的分片数不超过20个

中台一期项目目前(202010404)总共内存680GB,所以最大的分片数应该是13000左右,

  • 每个节点的JVM最大32GB(一般31GB)
打开性能查看选项

profile:true

要设置多少分片

ElasticSearch推荐的最大JVM堆空间是30~32G, 所以把你的分片最大容量限制为30GB, 然后再对分片数量做合理估算. 例如, 你认为你的数据能达到200GB, 我们推荐你最多分配7到8个分片。

总之, 不要现在就为你可能在三年后才能达到的10TB数据做过多分配. 如果真到那一天, 你也会很早感知到性能变化的

1) “我应该有多少个分片?”

答: 每个节点的分片数量保持在低于每1GB堆内存对应集群的分片在20-25之间。

2) “我的分片应该有多大”?

答:分片大小为50GB通常被界定为适用于各种用例的限制。

Every shard uses memory and CPU resources. In most cases, a small set of large shards uses fewer resources than many small shards.

每个碎片使用内存和CPU资源。在大多数情况下,一小组大碎片比许多小碎片使用更少的资源。

调优最佳实践

最佳实践策略

1、删除索引而不是仅删除文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Songx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值