弹性搜索 - 创建索引时通过同义词



我正在尝试使用弹性搜索中的同义词

下面是我的弹性搜索配置

<elasticsearch:node-client id="client" local="true"/>
    <bean name="elasticsearchTemplate" class="org.springframework.data.elasticsearch.core.ElasticsearchTemplate">
        <constructor-arg name="client" ref="client"/>
    </bean>

根据文档,提到将同义文件相对于弹性搜索的配置目录放置。

但是,就我而言,我想在创建索引时以编程方式传递同义词文本。用户将有选项在同义词文件中添加其他条目,并且应用程序将刷新索引,并使用更新的同义词文件

再次分析数据。

创建索引时,可以选择通过设置

elasticSearchTemplate.createIndex(MyClass.class , Map settings )

eg: elasticsearchTemplate.createIndex(Entity.class, "max_result_window = 15000");

,但同义词设置在分析仪模块中。

如果可以在创建索引

时可以通过设置将其作为设置传递,请恢复原状。

我发现的最接近的解决方案在下面。

@Document(indexName = "myindex", type = "mytype")
@Setting(settingPath = "/mysetting/mysetting.json")
public class Employee implements Serializable {
    @Id
    private String employeeId;
    @Field(type = FieldType.String, analyzer = "synonym_analyzer")
    private String transformedTitle ;

下面是mysetting.json

{
  "index": {
    "number_of_shards": "1",
    "number_of_replicas": "0",
    "analysis": {
      "analyzer": {
        "synonym_analyzer": {
          "tokenizer": "whitespace",
          "filter": [
            "synonym_filter"
          ]
        }
      },
      "filter": {
        "synonym_filter": {
          "type": "synonym",
          "synonyms": [
            "english,british",
          ],
          "ignore_case": "true"
        }
      }
    }
  }
}

最新更新