当前位置: 首页 > news >正文

武穴建设网站wordpress 发邮件

武穴建设网站,wordpress 发邮件,wordpress 服务器权限,wordpress 后台登录作者#xff1a;David Pilato 我最近在讨论论坛上收到一个问题#xff0c;关于如何修改官方 Docker 镜像以提供一个现成的 Elasticsearch 集群#xff0c;其中已经包含一些数据。 说实话#xff0c;我不喜欢这个想法#xff0c;因为你必须通过提 entrypoint.sh 的分叉版本…作者David Pilato 我最近在讨论论坛上收到一个问题关于如何修改官方 Docker 镜像以提供一个现成的 Elasticsearch 集群其中已经包含一些数据。 说实话我不喜欢这个想法因为你必须通过提 entrypoint.sh 的分叉版本来破解 Elasticsearch 服务的启动方式。 这将使你的维护和升级变得更加困难。 相反我发现使用其他解决方案来实现相同的目标会更好。 设置问题 首先我们将考虑使用 Elasticsearch Docker 镜像并遵循文档 docker pull docker.elastic.co/elasticsearch/elasticsearch:8.7.0 docker network create elastic docker run --name es01 --net elastic -p 9200:9200 -it docker.elastic.co/elasticsearch/elasticsearch:8.7.0 请注意我们没有在此处挂载 data 目录因此该集群的数据将是短暂的并且一旦节点关闭就会消失。 启动后我们可以使用生成的密码检查它是否运行良好 curl -s -k -u elastic:CHANGEME https://localhost:9200 | jq 请使用在安装时候显示的 Elasticsearch 密码来替换上面的 CHANGEME。上面的命令给出 {name: 697bf734a5d5,cluster_name: docker-cluster,cluster_uuid: cMISiT__RSWkoKDYql1g4g,version: {number: 8.7.0,build_flavor: default,build_type: docker,build_hash: 09520b59b6bc1057340b55750186466ea715e30e,build_date: 2023-03-27T16:31:09.816451435Z,build_snapshot: false,lucene_version: 9.5.0,minimum_wire_compatibility_version: 7.17.0,minimum_index_compatibility_version: 7.0.0},tagline: You Know, for Search } 因此我们希望有一个可用的数据集。 让我们采用我在演示 Elasticsearch 时经常使用的示例数据集人员数据集。 我创建了[一个生成器](https://github.com/dadoonet/injector) 来创建一些假数据。 首先让我们下载注入器 wget https://repo1.maven.org/maven2/fr/pilato/elasticsearch/injector/injector/8.7/injector-8.7.jar 然后我们将使用以下选项在磁盘上生成数据集 mkdir data java -jar injector-8.7.jar --console --silent data/persons.json 我们有 1000000 个 json 文档数据集如下所示 head -2 data/persons.json{name:Charlene Mickael,dateofbirth:2000-11-01,gender:female,children:3,marketing:{cars:1236,shoes:null,toys:null,fashion:null,music:null,garden:null,electronic:null,hifi:1775,food:null},address:{country:Italy,zipcode:80100,city:Ischia,countrycode:IT,location:{lon:13.935138341699972,lat:40.71842684204817}}} {name:Kim Hania,dateofbirth:1998-05-18,gender:male,children:4,marketing:{cars:null,shoes:null,toys:132,fashion:null,music:null,garden:null,electronic:null,hifi:null,food:null},address:{country:Germany,zipcode:9998,city:Berlin,countrycode:DE,location:{lon:13.164834451298645,lat:52.604673827377155}}} 使用 shell 脚本 我们这里有 100 万个文档因此我们无法真正使用批量请求来发送它。 我们需要 分成 10000 个或更少的索引操作对于每个文档添加缺少的 bulk 标题使用 _bulk API 发送文档 我最终编写了这个脚本它要求你安装了 curl 和 jq #!/bin/bash ELASTIC_PASSWORDCHANGEME mkdir tmp echo Split the source in 10000 items split -d -l10000 ../data/persons.json tmp/part BULK_REQUEST_FILEtmp/bulk_request.ndjson FILEStmp/part* for f in $FILES dorm $BULK_REQUEST_FILEecho Preparing $f file...while read p; doecho -e {index:{}} $BULK_REQUEST_FILEecho -e $p $BULK_REQUEST_FILEdone $fecho Calling Elasticsearch Bulk APIcurl -XPOST -s -k -u elastic:$ELASTIC_PASSWORD https://localhost:9200/person/_bulk -H Content-Type: application/json --data-binary $BULK_REQUEST_FILE | jq Bulk executed in \(.took) ms with errors\(.errors) done 有关脚本输入文档的方法你也可以参考文章 “Elasticsearch如何使用 shell 脚本来写入数据到 Elasticsearch 中”。 这基本上打印 Preparing tmp/part00 file... Calling Elasticsearch Bulk API Bulk executed in 1673 ms with errorsfalse Preparing tmp/part01 file... Calling Elasticsearch Bulk API Bulk executed in 712 ms with errorsfalse ... Preparing tmp/part99 file... Calling Elasticsearch Bulk API Bulk executed in 366 ms with errorsfalse 在我的机器上运行它需要 8 分钟多。 大部分时间都花在编写批量请求上。 可能还有很大的改进空间但我必须承认我不太擅长编写 shell 脚本。 哈 你已经猜到了吗 使用logstash Logstash 可以完成与我们手动完成的类似工作但还提供更多功能例如错误处理、监控我们甚至不需要编写代码... 我们将在这里再次使用 Docker docker pull docker.elastic.co/logstash/logstash:8.7.0 让我们为此编写一个作业 input {file {path /usr/share/logstash/persons/persons.jsonmode readcodec json { }exit_after_read true} }filter {mutate {remove_field [ log, timestamp, event, version ]} }output {elasticsearch {hosts ${ELASTICSEARCH_URL}index personuser elasticpassword ${ELASTIC_PASSWORD}ssl_certificate_verification false} } 我们现在可以运行该作业 docker run --rm -it --name ls01 --net elastic \-v $(pwd)/../data/:/usr/share/logstash/persons/:ro \-v $(pwd)/pipeline/:/usr/share/logstash/pipeline/:ro \-e XPACK_MONITORING_ENABLEDfalse \-e ELASTICSEARCH_URLhttps://es01:9200 \-e ELASTIC_PASSWORDCHANGEME \docker.elastic.co/logstash/logstash:8.7.0 在我的机器上运行它只需要不到 2 分钟。 使用 docker 撰写 你可以更轻松地使用 docker compose 命令来根据需要运行所有内容并向用户公开一个可供使用的集群而不是手动运行所有这些内容。 这是一个简单的 .env 文件 ELASTIC_PASSWORDCHANGEME STACK_VERSION8.7.0 ES_PORT9200 以及 docker-compose.yml version: 2.2 services:es01:image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}ports:- ${ES_PORT}:9200environment:- node.namees01- cluster.initial_master_nodeses01- ELASTIC_PASSWORD${ELASTIC_PASSWORD}- bootstrap.memory_locktrueulimits:memlock:soft: -1hard: -1healthcheck:test:[CMD-SHELL,curl -s -k https://localhost:9200 | grep -q missing authentication credentials,]interval: 10stimeout: 10sretries: 120logstash:depends_on:es01:condition: service_healthyimage: docker.elastic.co/logstash/logstash:${STACK_VERSION}volumes:- type: bindsource: ../datatarget: /usr/share/logstash/personsread_only: true- type: bindsource: pipelinetarget: /usr/share/logstash/pipelineread_only: trueenvironment:- ELASTICSEARCH_URLhttps://es01:9200- ELASTIC_PASSWORD${ELASTIC_PASSWORD}- XPACK_MONITORING_ENABLEDfalse 我们仍然在 ../data 目录中保存有 person.json 文件。 它被安装为 /usr/share/logstash/persons/persons.json 就像在前面的示例中一样。 因此我们使用与之前相同的 pipeline/persons.conf 文件。 要运行它我们现在只需输入 docker compose up 并等待 with-compose-logstash-1 容器退出 with-compose-logstash-1 | [2023-04-21T15:17:55,335][INFO ][logstash.runner ] Logstash shut down. with-compose-logstash-1 exited with code 0 这表明我们的服务现在已准备好运行并完全加载了我们的示例数据集。 有关这个部分的内容更多阅读请参考数据集成的强大联盟Elasticsearch、Kibana、Logstash、MySQL。 使用快照/恢复 你还可以使用创建快照 API 将 Elasticsearch 中的现有数据集备份到共享文件系统或 S3然后使用 Restore Restore API 将其恢复到新集群。 假设你已经注册了一个名为 example 的存储库。 你可以使用以下命令创建快照 # We force merge the segments first POST /person/_forcemerge?max_num_segments1# Snapshot the data PUT /_snapshot/sample/persons {indices: person,include_global_state: false } 因此无论何时启动新集群你都可以使用以下命令恢复快照 POST /_snapshot/sample/persons/_restore 你只需要小心使用此方法当你将其升级到新的主要版本时你拥有的快照仍然可以在集群中恢复。 例如如果你使用版本 6.3 创建了快照则无法在 8.2 中还原它。 有关更多详细信息请参阅快照索引兼容性。 但好消息 借助存档索引Elasticsearch 现在能够访问较旧的快照存储库返回到版本 5... 你只需要了解一些限制即可。 为了保证你的快照始终完全兼容你可能需要使用相同的脚本使用最新版本再次创建索引快照。 请注意在这种情况下Force Merger API 调用很重要因为它将使用最新的 Elasticsearch/Lucene 版本重写所有段。 使用已挂载的目录 还记得我们启动集群时的情况吗 docker run --name es01 --net elastic -p 9200:9200 -it docker.elastic.co/elasticsearch/elasticsearch:8.7.0 我们没有绑定挂载 data 和 config 目录。 但实际上我们可以这样做 docker run --name es01 --net elastic -p 9200:9200 -it -v persons-data:/usr/share/elasticsearch/data -v persons-config:/usr/share/elasticsearch/config docker.elastic.co/elasticsearch/elasticsearch:8.7.0 我们可以检查刚刚创建的 Docker volume docker volume inspect persons-data persons-config [{CreatedAt: 2023-05-09T10:20:14Z,Driver: local,Labels: null,Mountpoint: /var/lib/docker/volumes/persons-data/_data,Name: persons-data,Options: null,Scope: local},{CreatedAt: 2023-05-09T10:19:51Z,Driver: local,Labels: null,Mountpoint: /var/lib/docker/volumes/persons-config/_data,Name: persons-config,Options: null,Scope: local} ] 如果你想使用完全相同的命令行再次启动 Elasticsearch 节点你可以稍后再次重用此挂载点。 如果需要与其他用户共享卷可以将 /var/lib/docker/volumes/persons-config/ 和 /var/lib/docker/volumes/persons-data/ 中的数据备份到 /tmp/volume-backup 然后你可以与其他用户共享 /tmp/volume-backup/persons.tgz 文件并让他们恢复它。 docker volume create persons-config docker volume create persons-data docker run --rm -it -v /tmp/volume-backup:/backup -v /var/lib/docker:/docker alpine:edge tar xfz /backup/persons.tgz -C / 并再次启动容器 docker run --name es01 --net elastic -p 9200:9200 -it -v persons-data:/usr/share/elasticsearch/data -v persons-config:/usr/share/elasticsearch/config docker.elastic.co/elasticsearch/elasticsearch:8.7.0 使用 Elastic Cloud 当然你可以使用之前创建的快照来配置新的 Elasticsearch Cloud 实例而不是自行启动和管理本地 Elasticsearch 实例。 以下代码假设你已经定义了 API key。 POST /api/v1/deployments?validate_onlyfalse {resources: {elasticsearch: [{region: gcp-europe-west1,plan: {cluster_topology: [{zone_count: 2,elasticsearch: {node_attributes: {data: hot}},instance_configuration_id: gcp.es.datahot.n2.68x10x45,node_roles: [master,ingest,transform,data_hot,remote_cluster_client,data_content],id: hot_content,size: {resource: memory,value: 8192}}],elasticsearch: {version: 8.7.1},deployment_template: {id: gcp-storage-optimized-v5},transient: {restore_snapshot: {snapshot_name: __latest_success__,source_cluster_id: CLUSTER_ID}}},ref_id: main-elasticsearch}],kibana: [{elasticsearch_cluster_ref_id: main-elasticsearch,region: gcp-europe-west1,plan: {cluster_topology: [{instance_configuration_id: gcp.kibana.n2.68x32x45,zone_count: 1,size: {resource: memory,value: 1024}}],kibana: {version: 8.7.1}},ref_id: main-kibana}]},settings: {autoscaling_enabled: false},name: persons,metadata: {system_owned: false} } 只需将 CLUSTER_ID 替换为从中获取快照的源集群即可。 集群启动后你就拥有了一个功能齐全的实例可以在互联网上使用你想要的默认数据集。 完成后你可以使用以下命令轻松关闭部署 POST /api/v1/deployments/DEPLOYMENT_ID/_shutdown 同样只需将 DEPLOYMENT_ID 替换为你在创建部署时看到的部署 ID。 结论 与往常一样对于 Elastic特别是 Elasticsearch你有多种方法可以实现你的目标。 我在这里列出了其中一些但可能还有其他一些方法 使用 Shell 脚本你实际上不需要任何第三方工具但这需要编写一些代码。 代码看起来很简单只要偶尔运行一下就可以了。 如果你需要它更安全例如具有捕获和重试功能那么这将使你创建和维护更多代码。使用 Logstash它非常灵活因为你还可以将数据发送到 Elasticsearch 之外的其他目的地或者使用多个过滤器来修改/丰富源数据集。 启动速度有点慢但出于测试目的这不应该成为真正的问题。使用 docker compose我最喜欢的方法之一。 你只需运行 docker compose up 等几分钟后就完成了。 但这可能需要时间和硬件资源。使用快照/恢复比以前的方法更快因为数据已经建立索引。 但灵活性较差因为快照需要与你要恢复到的集群兼容。 一般来说我总是更喜欢再次注入数据因为一切都是新鲜的并且我可以从 Elasticsearch 和 Lucene 的所有改进中受益。使用挂载目录类似于快照但更本地化。 老实说我更喜欢使用 Elastic API而不是手动挂载现有目录。 让 Elasticsearch 做它知道的事情让我感觉更安全。使用 Elastic Cloud我认为这是与其他人例如客户或内部测试人员共享数据集的最简单方法。 一切都已准备就绪安全可以通过适当的 SSL 证书使用。 根据你的品味和限制你可以选择其中一种想法并根据你的需求进行调整。 如果你有其他好主意要分享请在 Twitter 上告诉我们或讨论区。 许多很棒的想法/功能都来自社区。 分享你的 原文Preload Elasticsearch with your dataset | Elastic Blog
http://www.dnsts.com.cn/news/88671.html

相关文章:

  • 萍乡手机网站建设建立网站可以赚钱吗
  • 建设电影推荐网站的项目背景wordpress与cms
  • 社区教育网站建设方案爱站网站长百度查询权重
  • 添加网站绑定主机名wap手机网站开发
  • 网站手机客户端制作免费h5旅游网站模板
  • 诚信网站建设做网站申请完空间后下一步干啥
  • 网站关键词排名分析中信建设有限责任公司 乔锋 电话
  • 网站后台有安全狗深圳高端网站建设网页设计
  • 重庆做网站需要多少钱生成关键词的软件免费
  • 上海工商网站wordpress恶意广告
  • 建设银行网站用户注册不了网站风格设计的选择
  • 福州专业做网站的公司有哪些公众号微网站建设认证
  • 营口房地产网站开发深圳建工集团股份有限公司待遇
  • 网站加入wordpress綦江网站建设公司
  • 为什么找别人做网站wordpress下载插件美化
  • 合肥网站快速优化排名南通企业网站排名
  • 自己做网站可以挣钱吗微信开放社区
  • element ui设计网站wordpress拼音目录
  • 西安知名网站建设公司网页设计与制作的实训报告怎样写
  • 怎么做自己网站里的资讯织梦网站修改教程视频教程
  • 网站关键词都在第二页生成手机网站
  • 网站开发设计培训中国比较好的设计网站
  • 肇庆做网站gdmkd设计室内装修app软件
  • 阿里云做电影网站吗网站的建设目标是什么
  • 做h5的网站的区别山东省质量建设监督总站网站
  • 建设网上银行怎么开通肇庆网站快速排名优化
  • 网站建设 技术支持wordpress 评论 图片
  • 网站如何兼容ie6泉州专业网站制作公司
  • 哈尔滨网站建设排行电商 企业网站 福州
  • 网站设计 网站建设 手机网站建设网站制作公司官网南京