我目前正在设计一个小项目,并希望就如何最好地使其更具未来性证明提出一些建议。
我有一个基本的对象Activity和扩展。在一个直接的数据库世界中,我可能有一个活动表,每个扩展的表和一个活动扩展连接表。
然后,我会在相应的表上进行联接以搜索信息。
我的计划是使用CXF将其作为Web服务,用于业务逻辑的java中间层和后面的弹性搜索来存储和查询数据。
我的问题是,我是以正确的方式思考弹性搜索,还是方法(不同的表和连接)完全错误。如果它是正确的,那么在ElasticSearch术语中表示不同“表”的最佳方式是什么。
对于elasticsearch,处理对象中的身份信息的最佳方式是什么。是否最好将_id映射到每个对象的id字段或存储我自己的id字段?
干杯, 罗布
答案 0 :(得分:1)
我看到比较说,在ElasticSearch中,索引与数据库相当,而且表与类型相当。
我认为你可以基本上采用两种不同的方式。
选项1:一个索引和一个类型。活动的每个子类型都被索引到ES中的一个类型,有些文档缺少字段。
这样就可以了,
选项2:一个索引和多个类型。 Activity的每个扩展都是ElasticSearch中的一种类型。
在任何一种方法中,您都可以搜索所有子类型。我认为搜索请求的复杂性取决于应用程序。
对于大多数应用程序,我认为我更喜欢选项2.每个子类型应该是ElasticSearch中自己的“类型”。如果需要,您可以跨类型使用Facets。如果你的子类型相对简单,我认为你可以做一个案例选项1。
当你实施它时,我很想知道它是如何实现的。