2016-05-31 72 views
1

我的以下问题是,我有一个项目列表,并希望用elasticsearch索引这些项目。我有一个正在运行的elasticsearch实例,并且此实例有一个名为“默认”的索引。Elasticsearch NEST Indeces and Indexing

于是我运行下面的代码:

var items = GetAListOfItem(); 
var response = Client.IndexMany(items); 

我也Client.IndexManyAsync(items)试了一下。但那没有做任何事情。

此列表中只有1个项目被索引。而已。我认为它是最后一项,它被编入索引。

我认为这可能是IEnumerable和多个枚举的东西,但我把它解析为List<Item>

另一个问题是关于Elasticsearch的最佳实践。使用每个模型的索引是否很常见?所以如果我从Exchange和另一个系统收集数据,我会做2个indeces?

  1. ExchangeIndex
  2. OtherSystemIndex

谢谢您的帮助。

更新:我看到我的Client.Index可以使所有这些调用成功,但所有这些对象都从NEST获得相同的ID。通常她必须自己增加,不是吗?

更新2:我固定的索引问题。我设置了一个空的ID字段。

但是仍然有关于Elasticsearch的问题。

回答

1

如果您正在使用相同的ID上传的所有数据,也不会增加的ID,将与该ID更新记录,你将有只有一个记录,这样你就可以上传数据没有ID或放弃只要有唯一的ID就可以识别记录。 另一个常见问题是您的记录与您为索引提供的映射不同。

关于另一个问题,在索引中,存储与您相关的信息,即使这些信息包含来自多个模型的内容,但您必须避免的唯一情况是混合信息,如果您有一个关于例如,服务器日志不会与用户活动混合使用。

+0

非常感谢您的回答。如前所述,我遇到了设置ID字段但未填写的问题。我现在就把它删除了。 从Exchange和数据库收集数据。所以一个模型是电子邮件,另一个模型基本上是联系人或其他东西。所以从你的例子我会说,即时通讯做2个indeces,对吧? – Marius

+0

这取决于,在你的例子中,只有电子邮件中的索引不要说太多,更好地丰富索引数据并创建包括联系信息或任何相关信息的索引(你必须在索引的目的下思考),所以你不需要查询多个索引来获得某些东西。在这个系统中有更好的重复数据,会更快的处理事情。 –