Elasticsearch编程配置

时间:2016-09-03 03:22:54

标签: java elasticsearch

我正在开发一个大数据项目,利用elasticsearch来处理大量的数据存储和搜索功能。更具体地说,我们使用Java API执行许多索引和搜索操作。应用程序设计的部分方式是当应用程序“活跃起来”时。可以这么说,对弹性搜索集群进行检查以确保所有索引都存在,如果不存在,则使用配置文件中定义的设置/映射创建它们。

我认为这是一种糟糕的方法,我想知道我的思路/方法是否正确。我看到索引和所有类型映射的实际创建类似于在关系数据库世界中执行表创建和设置约束的方式,而不是传统上以编程方式执行的操作。我知道你不必事先明确设置你要保存的类型的映射,因为elasticsearch会给它一个最佳的映射猜测,但我认为你会想做所有的工作。预先设置的索引和映射,并没有在代码中完成任何类型的映射和索引初始化。思考?我已经和ES一起工作很久了,还在学习,但这对我来说似乎不对。

1 个答案:

答案 0 :(得分:0)

通常,规划映射类型是明智的,因为在存储数据后无法更改映射字段的类型(无需重新索引所有数据)。如果您有想要完全匹配的文本字段,这是一个特殊问题。默认情况下,elasticsearch将通过分析这些字符串来索引字符串字段,并将它们分解为可以通过模糊搜索轻松匹配的结构。但是,这意味着通常无法完全匹配该字符串。

例如,如果您的映射包含一个包含电子邮件地址的字段,则默认情况下会在存储时对其进行分析。可以通过将映射类型设置为以下内容来更改此项:

{
  "type":"string",
  "index":"not_analyzed"
}

最重要的是,如果您在开始存储数据之前未进行此设置,则无法对其进行更改。