我是Elasticsearch的新手,我正在尝试使用Elasticsearch实现文本搜索功能。
我有超过 100 个文档,每个文档的行开头带有时间戳记符号。
例如。
00:00:00 - 00:01:00
这是第一行
00:01:01 - 00:02:30
这是第二行
00:02:30 - 00:03:45
这是第三行
00:03:46 - 00:05:00
这是第四行
00:05:01 - 00:06:00
这是第五行
...
以此类推。
我将每行分成不同的段落,并对文档进行文本搜索。
现在,我想按其中要定义 1个或更多关键字的关键字进行搜索,比如说时间戳00:00:00 - 00:05:00
之间的行。
因此,基于关键字搜索,应该返回00:00:00 - 00:05:00
中的全部数据。正如在所有这些时间戳之间的所有行一样,应基于关键字搜索返回这些时间戳。
能否请您帮助我了解如何使用Elasticsearch实现此功能?
提前谢谢!
答案 0 :(得分:0)
据我了解,以下是我的看法:
最好在架构中再创建一个字段(类型可以是datetime,timestamp),然后对该字段执行范围查询。因为它将要经常使用,并且您的数据将以时间序列的方式存储。
[不推荐]如果您的字段类型是存储整个字符串的“关键字”,则需要对'%youstring'使用通配符查询。但这只会返回部分数据。当然,这是昂贵且缓慢的。就像在SQL中查询一样。
[不推荐]如果您的字段类型是“文本”,则需要检查是否创建了日期时间术语。这也只是返回部分数据。
最好根据您的搜索查询来设计架构。第一种选择对您来说会更好,并且将有助于将来扩展。