INFINI Easysearch尝鲜Hands on

news2024/11/25 22:37:53

INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 的目标是提供一个自主可控的轻量级的 Elasticsearch 可替代版本,并继续完善和支持更多的企业级功能。 与 Elasticsearch 相比,Easysearch 更关注在搜索业务场景的优化和继续保持其产品的简洁与易用性。

Easysearch 支持原生 Elasticsearch 的 DSL 查询语法,确保原业务代码无需调整即可无缝迁移。同时,极限科技还支持 SQL 查询,为熟悉 SQL 的开发人员提供更加便捷的数据分析方式。此外,Easysearch 兼容 Elasticsearch 的 SDK 和现有索引存储格式,支持冷热架构和索引生命周期管理,确保用户能够轻松实现数据的无缝衔接。

安装

一键安装脚本

无论是Linux还是 mac 都是这个一键脚本

curl -sSL http://get.infini.cloud | bash -s -- -p easysearch

docker 部署

官方提供了Docker Compose 定,包括三个服务:easysearch-node1easysearch-node2console。以下是详细说明:

  1. 版本控制

    • version: '3' 表示使用 Docker Compose 文件的第 3 版格式。
  2. 服务定义

    • easysearch-node1 和 easysearch-node2

      • 这两个服务使用相同的 Docker 镜像 infinilabs/easysearch:latest来组成双节点的集群。
      • 容器运行时使用用户和组 ID 602:602
      • 设置了 ES_JAVA_OPTS 环境变量以配置 Java 虚拟机的内存。
      • ulimits 选项配置了内存锁定和文件描述符的限制,以提升性能。
      • 容器内的配置、数据和日志目录通过卷映射到主机目录中,以便于数据持久化。
      • 服务暴露特定端口,使外部能够访问容器中的服务。
      • 两个节点均加入名为 esnet 的自定义网络中。
    • console

      • 该服务使用镜像 infinilabs/console:1.26.0-1552(该镜像没有latest,需要手动更改版本)。
      • 同样通过卷将数据和日志目录映射到主机。
      • 暴露 9000 端口用于 Web 界面访问。
      • 使用 links 功能链接到 easysearch-node1easysearch-node2,简化容器之间的通信。
      • 设置了时区环境变量 TZAsia/Shanghai
  3. 网络配置

    • esnet 网络使用 bridge 驱动,提供一个隔离的网络环境,配置了特定的子网 172.24.0.0/16,以确保服务之间的网络通信。
version: '3'
services:
  easysearch-node1:
    user: "602:602"
    image: infinilabs/easysearch:latest
    container_name: easysearch-node1
    hostname: easysearch-node1
    environment:
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - $PWD/ezs1/config:/app/easysearch/config
      - $PWD/ezs1/data:/app/easysearch/data
      - $PWD/ezs1/logs:/app/easysearch/logs
    ports:
      - 9201:9200
      - 9301:9300
    networks:
      - esnet
  easysearch-node2:
    user: "602:602"
    image: infinilabs/easysearch:latest
    container_name: easysearch-node2
    hostname: easysearch-node2
    environment:
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - $PWD/ezs2/config:/app/easysearch/config
      - $PWD/ezs2/data:/app/easysearch/data
      - $PWD/ezs2/logs:/app/easysearch/logs
    ports:
      - 9202:9200
      - 9302:9300
    networks:
      - esnet
  console:
    image: infinilabs/console:1.26.0-1552
    container_name: console
    hostname: console
    volumes:
      - $PWD/console/data:/data
      - $PWD/console/log:/log
    networks:
      - esnet
    ports:
      - 9000:9000
    links:
      - easysearch-node1:es1
      - easysearch-node2:es2
    environment:
      - TZ=Asia/Shanghai

networks:
  esnet:
    driver: bridge
    ipam:
      config:
        - subnet: 172.24.0.0/16

尽管在这里官方提供了详细的命令,完全可以使用这个docker-compose up来进行替代。其他的脚本解释如下:

init.sh

#!/bin/bash

# 获取当前脚本所在目录的绝对路径
CUR_DIR=$(cd $(dirname $0); pwd)

# 创建必要的目录结构
mkdir -p $CUR_DIR/console/{data,log}
mkdir -p $CUR_DIR/{ezs1,ezs2}/{data,logs}

# 设置目录的拥有者和权限
chown -R 1000:1000 $CUR_DIR/console
chown -R 602:602 $CUR_DIR/{ezs1,ezs2}
chmod -R 0600 $CUR_DIR/{ezs1,ezs2}/config
# 设置 config 目录的子目录权限
find $CUR_DIR/{ezs1,ezs2}/config -type d -print0 | xargs -0 chmod 750

reset.sh

#!/bin/bash

# 获取当前脚本所在目录的绝对路径
CUR_DIR=$(cd $(dirname $0); pwd)

# 定义确认函数
function confirm() {
  display_str=$1
  default_ans=$2
  if [[ $default_ans == 'y/N' ]]; then
     must_match='[yY]'
  else
     must_match='[nN]'
  fi
  read -p"${display_str} [${default_ans}]:" ans
  [[ $ans == $must_match ]]
}

# 提示用户确认删除所有数据
confirm "RISK WARN: Delete all data!!!" 'y/N' && echo || exit

# 删除 console、ezs1 和 ezs2 的数据和日志文件
rm -rvf $CUR_DIR/console/{data,log}/*
rm -rvf $CUR_DIR/{ezs1,ezs2}/{data,logs}/*

start.sh

#!/bin/bash

# 使用 Docker Compose 启动 ezs2 项目中的服务
docker-compose -p ezs2 up

stop.sh

#!/bin/bash

# 使用 Docker Compose 关闭并移除 ezs2 项目中的所有服务
docker-compose -p ezs2 down

在我的电脑中,可以看到成功启动的容器。
在这里插入图片描述
https://infinilabs.cn/docs/latest/easysearch/getting-started/install/docker-compose/

Console连接

设置集群连接参数,比如域名端口,用户名密码。
在这里插入图片描述

初始化,这里会新建索引,写一些sample数据。
在这里插入图片描述
设置后台管理的密码,后期使用这个登录控制台。

在这里插入图片描述

检查配置,完成集群关联。
在这里插入图片描述
跨引擎、跨版本、跨集群 独一份!在这里插入图片描述

使用自带的面板进行查看节点数量:

在这里插入图片描述
同时也支持REST 风格的API来进行查询。
在这里插入图片描述

是否开源?目前还没有开放源代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1879090.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从一到无穷大 #30 从阿里云盘古的屠龙之术看使用blob storage作为统一存储层的优势

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。 本作品 (李兆龙 博文, 由 李兆龙 创作),由 李兆龙 确认,转载请注明版权。 文章目录 引言盘古演进过程盘古2.0 第一阶段Append-Only File System统一持久化层与ClientClie…

【操作系统期末速成】 EP01 | 学习笔记(基于五道口一只鸭)

文章目录 一、前言🚀🚀🚀二、正文:☀️☀️☀️1.1 考点一:操作系统的概率及特征 三、总结:🍓🍓🍓 一、前言🚀🚀🚀 ☀️ 回报不在行动…

使用Python构建文档替换工具,轻松解放双手!

引言: 在处理大量文档时,逐个替换关键词是一项耗时且繁琐的任务。但是,通过使用Python和wxPython,我们可以轻松构建一个文档替换工具,帮助我们快速完成这项任务。本文将详细介绍这段代码的功能和实现原理,以…

【活动感想】筑梦之旅·AI共创工坊 workshop 会议回顾

目录 🌊1. 会议详情 🌊2. 会议回顾 🌍2.1 主持人开场 🌍2.2 元甲-小当家 AI 驱动的创意儿童营养早餐料理机&今天吃什么App 🌍2.3 Steven- A l 心理疗愈认知 🌍2.4 伯棠-诸子百家(xExperts)-多智能…

2.2 Python数据类型详解

第二节:Python数据类型详解 Python作为一种动态类型语言,支持多种数据类型,每种数据类型都有其特定的特点和用途。本章将详细介绍Python中常见的数据类型及其特性,以及如何使用这些数据类型进行编程。 2.2.1 整数 (int) 整数是…

D-MAX纠偏软件Fife MAX Terminal软件MAX-Oi软件

D-MAX纠偏软件Fife MAX Terminal软件MAX-Oi软件

74HC595 驱动代码 单线串口输出转并输出

void _74HC595IOIinit() {GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitStructure.GPIO_Pin RCLK_Pin ;GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP; //复用推挽…

告别模糊时代,扫描全能王带来清晰世界

模糊碑文引发的思考 上个月中旬去洛阳拜访了著名的龙门石窟,本就对碑文和文字图画感兴趣的我们,准备好好欣赏一下龙门石窟的历史文化古迹。到了地方之后,我发现石窟的高度和宽度远远超出了想象,正因如此,拍出来的文字…

知识不成体系?这篇Mysql数据库将成为你的解忧杂货店!(子查询)

欢迎来到一夜看尽长安花 博客,您的点赞和收藏是我持续发文的动力 对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何想要讨论的问题可联系我:3329759426qq.com 。发布文章的风格因专栏而异,均自成体系,不足…

Sora DiT图解【文生视频】

“在古老的迪萨罗斯大陆,曾经住着一位传奇人物,名叫索拉(Sora)。这个传奇人物体现了无限潜力的本质,包括天空的浩瀚和壮丽。 当它飞得很高,彩虹色的翅膀横跨广阔的空间,光线从它引人注目的身体…

ISS检测原理

ISS(Intrinsic Shape Signatures)是由Yu Zhong于2009年提出的一种三维形状描述子,用于描述局部或半局部区域的点云,局部区域可以理解为以一个点云中某点为球心,以一定半径构成的可以包含多个内点的球形区域,半局部则是半个球形区域。ISS可用于不同视角点云的配准、快速姿…

陕西水务发展建设集团2024招聘

报名时间: 2024-06-28 至 2025-06-28 单位名称: 陕西水务发展集团有限公司 所在地: 陕西省西安市未央区 陕西水务发展建设集团2024招聘公告 一、企业简介 陕西水务发展建设集团有限公司属陕西水务发展集团二级子公司,成立于2018年,主要从事市政、房建、水利水电等工程项…

文件系统(操作系统实验)

实验内容 (1)在内存中开辟一个虚拟磁盘空间作为文件存储器, 在其上实现一个简单单用户文件系统。 在退出这个文件系统时,应将改虚拟文件系统保存到磁盘上, 以便下次可以将其恢复到内存的虚拟空间中。 (2&…

53、基于竞争层的竞争学习(matlab)

1、基于竞争层的竞争学习简介及原理 竞争学习是一种无监督学习方法,其中的竞争层神经元之间互相竞争以学习输入模式的表示。竞争学习的一个经典模型是竞争神经网络(Competitive Neural Network,简称CNN),其核心部分是…

PingCastle 3.2.0.1 - Active Directory 安全检测和评估

PingCastle 3.2.0.1 - Active Directory 安全检测和评估 活动目录域安全分析工具 请访问原文链接:https://sysin.org/blog/pingcastle/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 在 20% 的时间内获得 80% 的…

Linux多进程和多线程(一)-进程的概念和创建

进程 进程的概念进程的特点如下进程和程序的区别LINUX进程管理 getpid()getppid() 进程的地址空间虚拟地址和物理地址进程状态管理进程相关命令 ps toppstreekill 进程的创建 并发和并行fork() 父子进程执行不同的任务创建多个进程 进程的退出 exit()和_exit() exit()函数让当…

ros中teleop_twist_keyboard安装使用

目录 1.安装 2.使用 3.说明 1.安装 sudo apt-get install ros-noetic-teleop-twist-keyboard 其中noetic替换成你自己的ros版本 2.使用 roscore #启动roscore rosrun teleop_twist_keyboard teleop_twist_keyboard.py …

Python学习笔记(一):基础特性

python英文官方文档:https://docs.python.org/3.8/tutorial/index.html 比较不错的python中文文档:https://www.runoob.com/python3/python3-tutorial.html 1. 写在前面 这几周从实践角度又学习了一遍python,温故而知新,还是有蛮多心得的, 周末再看之前记的python笔记,…

vue3绘制广东深圳地图使用echarts

<!-- 饼图 --> <template><el-card><template #header> 地级市分类图 </template><div :id"id" :class"className" :style"{ height, width }"></div></el-card> </template><script …

【算法专题--栈】用栈实现队列 -- 高频面试题(图文详解,小白一看就懂!!)

目录 一、前言 二、题目描述 三、解题方法 ⭐双栈 模拟 队列 &#x1f95d;栈 和 队列 的特性 &#x1f34d;具体思路 &#x1f34d;案例图解 四、总结与提炼 五、共勉 一、前言 用栈实现队列 这道题&#xff0c;可以说是--栈专题--&#xff0c;最经典的一道题&…