弹性搜索 - 创建索引时传递同义词
Elastic Search - Pass Synonym while creating index
我正在尝试使用弹性搜索中的同义词功能
下面是我的弹性搜索配置
<elasticsearch:node-client id="client" local="true"/>
<bean name="elasticsearchTemplate" class="org.springframework.data.elasticsearch.core.ElasticsearchTemplate">
<constructor-arg name="client" ref="client"/>
</bean>
根据文档,提到将同义词文件相对于 Elastic Search 的配置目录放置。
但就我而言,我想在创建索引时以编程方式传递同义词文本。用户可以选择在同义词文件中添加其他条目,应用程序将刷新索引并使用更新后的同义词文件再次分析数据
创建索引时,有一个传递设置的选项
elasticSearchTemplate.createIndex(MyClass.class , Map settings )
例如: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"
}
}
}
}
}
我正在尝试使用弹性搜索中的同义词功能
下面是我的弹性搜索配置
<elasticsearch:node-client id="client" local="true"/>
<bean name="elasticsearchTemplate" class="org.springframework.data.elasticsearch.core.ElasticsearchTemplate">
<constructor-arg name="client" ref="client"/>
</bean>
根据文档,提到将同义词文件相对于 Elastic Search 的配置目录放置。
但就我而言,我想在创建索引时以编程方式传递同义词文本。用户可以选择在同义词文件中添加其他条目,应用程序将刷新索引并使用更新后的同义词文件再次分析数据
创建索引时,有一个传递设置的选项
elasticSearchTemplate.createIndex(MyClass.class , Map settings )
例如: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"
}
}
}
}
}