我正在考虑将elasticsearch集成到我的spring-jpa驱动的应用程序中
为此,elasticsearch-osem项目似乎非常合适
我无法理解的是@Indexable(indexName = "someIndex")
注释的作用是什么,该注释在项目介绍的示例中显示。
令我困惑的是,在同一个例子中它说:
然后您可以将对象写入ElasticSearch客户端:
node.client()。prepareIndex(“twitter”,“tweet”,“1”)。setSource(context.write(tweet))。execute()。actionGet();
其中“twitter”是索引名称。
我认为我的问题是为什么还要在字段上定义@Indexable
,为什么要定义索引名?
由于
答案 0 :(得分:2)
使用@Indexable
,您可以说明索引中应包含哪些字段。 indexName
是索引中字段的名称。这不是您使用其他调用设置的索引的名称。
来自Javadoc:
/**
* The name of the field that will be stored in the index. Defaults to the property/field name.
*/
String indexName() default "";
答案 1 :(得分:1)
在查看源代码之后,我能够看到@Indexable用于为索引实体或中的索引属性字段提供别名,以允许索引未索引的属性实体。
您可以在getIndexableProperties
类型的AttributeSourceImpl
方法中看到这一点,并在评论中说明这一点:
可搜索的类属性是隐式可索引的