Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 弹性搜索同一数据的一个索引或多个索引_Search_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Full Text Search_Bigdata - Fatal编程技术网 elasticsearch,full-text-search,bigdata,Search,elasticsearch,Full Text Search,Bigdata" /> elasticsearch,full-text-search,bigdata,Search,elasticsearch,Full Text Search,Bigdata" />

Search 弹性搜索同一数据的一个索引或多个索引

Search 弹性搜索同一数据的一个索引或多个索引,search,elasticsearch,full-text-search,bigdata,Search,elasticsearch,Full Text Search,Bigdata,我正在构建一个可以从ElasticSearch中获益匪浅的应用程序。在我当前的版本中,我只使用了一个索引:“messages”和一个类型:“message” 消息由以下格式组成(平均10kb): 搜索当前基于帐户id(为每个查询添加筛选器)。在我的mySQL数据库中,每个帐户都有一个公司id(一个公司可以有多个帐户)。将来我可能会允许用户在公司范围内搜索,而不是在单个帐户内搜索。我的数据集有点大(>5000万个文档) 我的问题是什么是最好的,只需将此单一索引(messages)与单一类型(mes

我正在构建一个可以从ElasticSearch中获益匪浅的应用程序。在我当前的版本中,我只使用了一个索引:“messages”和一个类型:“message”

消息由以下格式组成(平均10kb):

搜索当前基于帐户id(为每个查询添加筛选器)。在我的mySQL数据库中,每个帐户都有一个公司id(一个公司可以有多个帐户)。将来我可能会允许用户在公司范围内搜索,而不是在单个帐户内搜索。我的数据集有点大(>5000万个文档)

我的问题是什么是最好的,只需将此单一索引(messages)与单一类型(message)一起使用,或者在公司范围内的索引上执行类似操作,在该索引中,我将为每个公司创建一个新索引(如messages_%company_id%)


我的数据集每月将增加1-500万个文档,文档几乎不需要删除。在这里,旧数据可以像新插入的文档一样有价值。

我坚持使用单一索引和单一类型

ES“索引”类似于SQL“数据库”。ES“类型”类似于SQL“表”。您会为不同的公司创建不同的数据库还是表?可能不会

ES的伸缩性非常好,可以很容易地根据您希望在类型中搜索的任何内容进行搜索。只要您为ES提供必要的硬件,文档就不会有问题


另外一个注意事项:如果有任何诱惑让ES成为您唯一的数据存储,我会抵制它。我觉得还不太清楚。保持MySQL数据库作为“权威”存储引擎,并使用ES进行搜索。

目前我将MySQL作为主要数据存储,S3文档的一些(重要)元数据在其中,其余在S3的原始文件中。所以ES确实为我提供了搜索功能,但我始终能够从mySQL和S3组合中完全重建/恢复此功能。是的,只要您能够从mySQL+S3重建,您就应该没事了!因此,如果我创建多个索引和/或类型,我将无法获得更好的性能或更少的资源。ES可以在单个索引中使用单个大型类型进行缩放。分离的唯一真正原因是模式是否不同。例如,您可能有一个“message”类型和单独的“person”类型,每个类型都有完整的模式/字段。请记住,ES“类型”大致相当于SQL“表”。
messages
- id
- subject (string)
- date (date) (format: dateOptionalTime)
- account_id (integer)
- body (string)
- receivers (nested)
   properties:
      name (string)
      email (string) 
- files (nested)
   properties:
      content_type (string)
      filename (string) 
      size (long)