将自定义分析器添加到使用spring构建的索引的基础知识

时间:2015-10-07 15:01:45

标签: elasticsearch spring-data-elasticsearch

我认为这是一个非常基本的问题,但我会继续在房子周围走动,所以任何有助于我指向正确方向的人都会受到赞赏。

我继承了一个java应用程序,它使用spring-data-elasticsearch(目前为1.2.1.RELEASE)构建和弹性搜索索引。我已经以各种简单的方式对此进行了相当成功的修改,但现在我想在一个字段上添加一个自定义分析器(char映射以删除/')。

正在构建的索引基本上是1个索引,具有各种文档类型。它看起来几乎是开箱即用的。我对java和spring相当新,但跟踪所有的配置和自动连接仍然有时会让我失望,但据我所知,上下文XML文件中的客户端配置直接指向spring代码而不是添加很多,除了自定义索引名称和存储库接口和代码的位置

<elasticsearch:node-client id="esClient" local="true" cluster-name="products"/>
<elasticsearch:repositories base-package="com.warehouse.es.repos"/>

<bean name="elasticsearchTemplate" class="org.springframework.data.elasticsearch.core.ElasticsearchTemplate">
    <constructor-arg name="client" ref="esClient"/>
</bean>

然后代码似乎使用开箱即用的客户端对象

@Autowired
public void setClient(Client client) throws IOException {
    this.client = client;

然后继续使用沿这些行的映射文件设置各种类型映射

createTypeMapping(client, Constants.INDEX_NAME, INDEX_TYPE, "Products.mapping");

道歉,如果其中某些内容过于简短(或者对于这个基本问题过于夸张),但我正在尝试找出一个如何以及在何处添加自定义分析器的示例。我有文档和示例向我展示如何创建一些json来创建自定义分析器 (例如https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-mapping-charfilter.html#analysis-mapping-charfilter 和一些以前的stackoverflow q&amp; s's)

但是我很难理解我在创建索引的java代码中添加它的位置。

显然越有帮助越好(!)但是在这个阶段我真的试图抓住我是否可以将分析器添加到yml文件中,或者是否需要添加一些代码来修改客户端某种方式?或者甚至可以将其添加到单独的类型映射中。

感谢。

1 个答案:

答案 0 :(得分:1)

如果已直接在集群上创建索引/类型(如运行curl命令),或者您的Spring应用程序正在处理索引/类型创建。在后一种情况下,我认为您可以关注this link on github中的一些代码示例。

如果您的Products.mapping文件包含的内容看起来确实类似于地图。但是,如果通过添加新分析器更改类型映射,则需要重新索引群集中的任何数据。

使用海报调查结果编辑:not possible将设置放在项目的各个映射文件中,但作为带有@settings注释的单独文件。