使用弹性搜索的关键字搜索

时间:2019-10-18 19:07:22

标签: elasticsearch full-text-search keyword-search

我是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实现此功能?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

据我了解,以下是我的看法:

  1. 最好在架构中再创建一个字段(类型可以是datetime,timestamp),然后对该字段执行范围查询。因为它将要经常使用,并且您的数据将以时间序列的方式存储。

  2. [不推荐]如果您的字段类型是存储整个字符串的“关键字”,则需要对'%youstring'使用通配符查询。但这只会返回部分数据。当然,这是昂贵且缓慢的。就像在SQL中查询一样。

  3. [不推荐]如果您的字段类型是“文本”,则需要检查是否创建了日期时间术语。这也只是返回部分数据。

最好根据您的搜索查询来设计架构。第一种选择对您来说会更好,并且将有助于将来扩展。