Manticore Search 中文文档
  • Manticore Search 中文文档
  • ☝️介绍
  • ❗首先阅读
  • 1️⃣ 安装
    • • Docker
    • • RedHat和CentOS
    • • Debian和Ubuntu
    • • MacOS
    • • Windows
    • • 从源码编译
    • • Manticore Buddy
    • • 从Sphinx迁移
  • 🔰快速入门指南
  • 2️⃣ 启动服务器
    • • Linux
    • • 手动启动
    • • Docker
    • • Windows
    • • MacOS
  • 3️⃣ 创建表
    • ⪢ 数据类型
      • • 行存储和列存储属性
    • ⪢ 创建本地表
      • ✔️实时表
      • • 普通表
      • • 普通表和实时表设置
      • • 渗透表
      • • 模板表
    • [⪢ 自然语言处理(NLP)和分词]
      • • 数据分词
      • • 支持的语言
      • • 中文、日文、韩文(CJK)和泰语语言
      • • 低级分词
      • • 通配符搜索设置
      • • 忽略停用词
      • • 词形
      • • 异常处理
      • • 词法
      • • 高级 HTML 分词
    • ⪢ 创建分布式表
      • • 创建本地分布式表
      • • 远程表
  • • 列出表
  • • 删除表
  • • 清空表
  • ⪢ 创建集群
    • 添加新节点
    • ⪢ 删除节点
      • 镜像
      • 负载均衡
    • ⪢ 设置复制
      • 创建复制集群
      • 加入复制集群
      • 删除复制集群
      • 在复制集群中添加和删除表
      • 管理复制节点
      • 复制集群状态
      • 重启集群
      • 集群恢复
  • 4️⃣ 连接服务器
    • MySQL协议
    • HTTP
    • 通过 HTTP 的 SQL
  • ⪢ 数据创建和修改
    • [⪢ 向表中添加文档]
      • ✔️向实时表添加文档
      • 向渗透表添加规则
    • [⪢ 从外部存储添加数据]
      • 创建普通表
      • [⪢ 从数据库获取数据]
        • 介绍
        • 数据库连接
        • 执行获取查询
        • 处理获取的数据
        • 范围查询
      • 从 XML 流获取数据
      • • 从 CSV、TSV 获取数据
      • • 主+增量模式查询
      • [⪢ 从表中添加数据]
        • • 合并表
        • • 在普通表中使用杀死列表
        • • 将一张表附加到另一张表
        • • 导入实时表
      • • 轮换表
    • [⪢ 更新文档]
      • • 替换 VS 更新
      • • 替换
      • • 更新
    • • 删除文档
    • • 事务
  • [5️⃣ 搜索]
    • • 简介
    • [⪢ 全文匹配]
      • • 基本用法
      • • 操作符
      • • 转义
      • • 查询分析
      • • 布尔优化
    • • 搜索结果
    • • 过滤器
    • • 连接
    • • 表达式
    • • 搜索选项
    • • 高亮显示
    • • 排序与排名
    • • 分页
    • • 分布式搜索
    • • 多查询
    • • 子查询
    • • 分组
    • • 分面搜索
    • • 地理(Geo)搜索
    • • 渗透查询
    • • 自动补全
    • • 拼写校正
      • • 模糊搜索
    • • 查询缓存
    • • 排序规则
    • • 基于成本的优化器
    • • K-最近邻向量搜索
  • • 更新表结构和设置
    • • 在实时模式下更新表模式
    • • 在实时模式下更新表的全文搜索设置
    • • 重命名实时表
    • • 更新普通表的全文搜索设置
    • • 重建二级索引
    • • 修改分布式表
  • ⪢ 函数
    • • 数学函数
    • • 搜索与排名函数
    • • 类型转换函数
    • • 数组与条件处理函数
    • • 日期和时间函数
    • • 地理空间函数
    • • 字符串函数
    • • 其他函数
  • [⪢ 表的安全性与压缩]
    • • 备份与恢复
    • • 实时表的结构
    • • 将RAM块刷新到新磁盘块
    • • 将实时表刷新到磁盘
    • • 压缩表
    • • 刷新与合并期间的隔离
    • • 冻结表
    • • 刷新属性
    • • 刷新hostnames
  • [⪢ 安全]
    • • SSL
    • • 只读
  • [⪢ 日志]
    • • 查询日志
    • • 服务器日志
    • • 二进制日志
    • • Docker日志
    • • 轮转查询和服务器日志
  • [⪢ 节点信息与管理]
    • • 节点状态
    • • SHOW META
    • • SHOW THREADS
    • • SHOW QUERIES
    • • SHOW VERSION
    • • KILL
    • • SHOW WARNINGS
    • • SHOW VARIABLES
    • [⪢ 性能分析]
      • • 查询分析
      • • 查询计划
    • [⪢ 表设置和状态]
      • • SHOW TABLE STATUS
      • • SHOW TABLE SETTINGS
  • [⪢ 服务器设置]
    • • Searchd
    • • 通用设置
    • • 特殊后缀
    • • 脚本化配置
    • • 注释
    • • 表和源声明的继承
    • • 在线设置变量
  • [⪢ 集成]
    • Logstash
    • Filebeat
    • DBeaver
    • Apache Superset
  • [⪢ 扩展]
    • SphinxSE
    • FEDERATED
    • ⪢ UDFs 和插件
      • 列出插件
      • ⪢ 用户自定义函数 (UDF)
        • 创建函数
        • 删除函数
      • [⪢ 插件]
        • • 创建插件
        • • 删除插件
        • • 启用和禁用 Buddy 插件
        • • 重新加载插件
        • • 排名插件
        • • 令牌过滤器插件
  • • 杂项工具
  • • OpenAPI 规范
  • • 远程监控
  • • 更新日志
  • 🐞报告BUG
  • 📖参考文献
    • [• 先前版本](References.md#旧版本 Manticore 的文档)
由 GitBook 提供支持
在本页
  • NOW()
  • CURTIME()
  • CURDATE()
  • UTC_TIME()
  • UTC_TIMESTAMP()
  • SECOND()
  • MINUTE()
  • HOUR()
  • DAY()
  • MONTH()
  • QUARTER()
  • YEAR()
  • DAYNAME()
  • MONTHNAME()
  • DAYOFWEEK()
  • DAYOFYEAR()
  • YEARWEEK()
  • YEARMONTH()
  • YEARMONTHDAY()
  • TIMEDIFF()
  • DATEDIFF()
  • DATE()
  • TIME()
  • DATE_FORMAT()
  • DATE_HISTOGRAM()
  • DATE_RANGE()
在GitHub上编辑
  1. ⪢ 函数

• 日期和时间函数

请注意,CURTIME()、UTC_TIME()、UTC_TIMESTAMP() 和 TIMEDIFF() 可以通过使用任意转换函数(例如 BIGINT()、DOUBLE() 等)提升为数值类型。

NOW()

返回当前整数时间戳。

select NOW();
+------------+
| NOW()      |
+------------+
| 1615788407 |
+------------+

CURTIME()

以 hh:ii:ss 格式返回本地时区的当前时间。

select CURTIME();
+-----------+
| CURTIME() |
+-----------+
| 07:06:30  |
+-----------+

CURDATE()

以 YYYY-MM-DD 格式返回本地时区的当前日期。

select curdate();
+------------+
| curdate()  |
+------------+
| 2023-08-02 |
+------------+

UTC_TIME()

以 hh:ii:ss 格式返回 UTC 时区的当前时间。

select UTC_TIME();
+------------+
| UTC_TIME() |
+------------+
| 06:06:18   |
+------------+

UTC_TIMESTAMP()

以 YYYY-MM-DD hh:ii:ss 格式返回 UTC 时区的当前时间。

select UTC_TIMESTAMP();
+---------------------+
| UTC_TIMESTAMP()     |
+---------------------+
| 2021-03-15 06:06:03 |
+---------------------+

SECOND()

根据当前时区从时间戳参数中返回秒数整数(范围 0..59)。

select second(now());
+---------------+
| second(now()) |
+---------------+
| 52            |
+---------------+

MINUTE()

根据当前时区从时间戳参数中返回分钟整数(范围 0..59)。

select minute(now());
+---------------+
| minute(now()) |
+---------------+
| 5             |
+---------------+

HOUR()

根据当前时区从时间戳参数中返回小时整数(范围 0..23)。

select hour(now());
+-------------+
| hour(now()) |
+-------------+
| 7           |
+-------------+

DAY()

根据当前时区从时间戳参数中返回日期整数(范围 1..31)。

select day(now());
+------------+
| day(now()) |
+------------+
| 15         |
+------------+

MONTH()

根据当前时区从时间戳参数中返回月份整数(范围 1..12)。

select month(now());
+--------------+
| month(now()) |
+--------------+
| 3            |
+--------------+

QUARTER()

返回时间戳参数中的年份季度整数(范围 1..4),根据当前时区。

select quarter(now());
+----------------+
| quarter(now()) |
+----------------+
| 2              |
+----------------+

YEAR()

返回时间戳参数中的年份整数(范围 1969..2038),根据当前时区。

select year(now());
+-------------+
| year(now()) |
+-------------+
| 2024        |
+-------------+

DAYNAME()

返回给定时间戳参数的星期几名称,根据当前时区。

select dayname(now());
+----------------+
| dayname(now()) |
+----------------+
| Wednesday      |
+----------------+

MONTHNAME()

返回给定时间戳参数的月份名称,根据当前时区。

select monthname(now());
+------------------+
| monthname(now()) |
+------------------+
| August           |
+------------------+

DAYOFWEEK()

返回给定时间戳参数的星期几整数索引(范围 1..7),根据当前时区。请注意,星期从周日开始。

select dayofweek(now());
+------------------+
| dayofweek(now()) |
+------------------+
| 5                |
+------------------+

DAYOFYEAR()

返回给定时间戳参数的年度天数整数(范围 1..366),根据当前时区。

select dayofyear(now());
+------------------+
| dayofyear(now()) |
+------------------+
|              214 |
+------------------+

YEARWEEK()

返回给定时间戳参数的整数年份和当前周的第一天代码(范围 1969001..2038366),根据当前时区。

select yearweek(now());
+-----------------+
| yearweek(now()) |
+-----------------+
|         2023211 |
+-----------------+

YEARMONTH()

返回时间戳参数中的年份和月份代码整数(范围 196912..203801),根据当前时区。

select yearmonth(now());
+------------------+
| yearmonth(now()) |
+------------------+
| 202103           |
+------------------+

YEARMONTHDAY()

返回基于当前时区的年份、月份和日期代码整数(范围 19691231 到 20380119)。

select yearmonthday(now());
+---------------------+
| yearmonthday(now()) |
+---------------------+
| 20210315            |
+---------------------+

TIMEDIFF()

计算两个时间戳之间的差异,格式为 hh:ii:ss。

select timediff(1615787586, 1613787583);
+----------------------------------+
| timediff(1615787586, 1613787583) |
+----------------------------------+
| 555:33:23                        |
+----------------------------------+

DATEDIFF()

计算两个时间戳之间的天数差异。

select datediff(1615787586, 1613787583);
+----------------------------------+
| datediff(1615787586, 1613787583) |
+----------------------------------+
|                               23 |
+----------------------------------+

DATE()

将时间戳参数中的日期部分格式化为 YYYY-MM-DD 字符串。

select date(now());
+-------------+
| date(now()) |
+-------------+
| 2023-08-02  |
+-------------+

TIME()

将时间戳参数中的时间部分格式化为 HH:MM:SS 字符串。

select time(now());
+-------------+
| time(now()) |
+-------------+
| 15:21:27    |
+-------------+

DATE_FORMAT()

  • %Y - 四位数年份

  • %m - 两位数月份(01-12)

  • %d - 两位数日期(01-31)

  • %H - 两位数小时(00-23)

  • %M - 两位数分钟(00-59)

  • %S - 两位数秒(00-59)

  • %T - 24小时制时间(%H:%M:%S)

请注意,这不是说明符的完整列表。请查阅您的操作系统 strftime() 的文档以获取完整列表。

SELECT DATE_FORMAT(NOW(), 'year %Y and time %T');
+------------------------------------------+
| DATE_FORMAT(NOW(), 'year %Y and time %T') |
+------------------------------------------+
| year 2023 and time 11:54:52              |
+------------------------------------------+

此示例格式化当前日期和时间,显示四位数年份和 24 小时制时间。

DATE_HISTOGRAM()

DATE_HISTOGRAM(expr, {calendar_interval='unit_name'}) 使用单位名称作为桶大小并返回该值的桶号。值会被舍入到最接近的桶。关键函数为:

key_of_the_bucket = interval * floor ( value / interval )

间隔使用单位名称指定,如 week 或 1M。不支持多个单位组合(如 2w)。

有效的间隔有:

  • minute, 1m

  • hour, 1h

  • day, 1d

  • week, 1w

  • month, 1M

  • year, 1y

用于聚合、FACET 和分组。

示例:

SELECT COUNT(*),
DATE_HISTOGRAM(tm, {calendar_interval='month'}) AS months
FROM facets
GROUP BY months ORDER BY months ASC;

DATE_RANGE()

用于聚合、FACET 和分组。

示例

SELECT COUNT(*),
DATE_RANGE(tm, {range_to='2017||+2M/M'},{range_from='2017||+2M/M',range_to='2017||+5M/M'},{range_from='2017||+5M/M'}) AS points
FROM idx_dates
GROUP BY points ORDER BY points ASC;

日期数学

日期数学允许您在搜索中直接处理日期和时间。它对于处理随时间变化的数据尤其有用。通过日期数学,您可以轻松执行以下操作:查找特定时期的条目、分析数据趋势或管理何时删除信息。它通过让您能够在给定日期上加减时间、将日期舍入到最近的时间单位等方式,简化了日期的处理,这些操作都可以在您的搜索查询中进行。

要使用日期数学,您可以从一个基准日期开始,它可以是:

  • now 代表当前日期和时间,

  • 或者以 || 结尾的特定日期字符串。

然后,您可以使用以下操作来修改此日期:

  • +1y 表示增加一年,

  • -1h 表示减少一小时,

  • /m 表示舍入到最近的月份。

在这些操作中,您可以使用以下时间单位:

  • s 代表秒,

  • m 代表分钟,

  • h(或 H)代表小时,

  • d 代表天,

  • w 代表周,

  • M 代表月,

  • y 代表年。

以下是一些日期数学的使用示例:

  • now+4h 表示从现在起四小时后。

  • now-2d/d 表示两天前的时间,并舍入到最近的一天。

  • 2010-04-20||+2M/d 表示 2010 年 6 月 20 日,并舍入到最近的一天。

上一页• 数组与条件处理函数下一页• 地理空间函数

最后更新于6个月前

根据提供的日期和格式参数返回格式化的字符串。格式参数使用与 函数相同的说明符。为了方便,以下是一些常用的格式说明符:

DATE_RANGE(expr, {range_from='date_math', range_to='date_math'}) 接受一组范围并返回该值的桶号。表达式包括 range_from 值并排除 range_to 值。范围可以是开放的 - 仅包含 range_from 或仅包含 range_to 值。与 函数的不同之处在于,range_from 和 range_to 值可以用 表达式表示。

strftime
Date math
RANGE()