首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >弹性搜索-创建索引时传递同义词

弹性搜索-创建索引时传递同义词
EN

Stack Overflow用户
提问于 2017-03-11 05:51:38
回答 1查看 349关注 0票数 0

我正在尝试使用elastic search中的同义词功能

下面是我的弹性搜索配置

代码语言:javascript
复制
<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的config目录放置同义词文件。

但在我的例子中,我希望在创建索引时以编程方式传递同义词文本。用户将可以选择在同义词文件中添加其他条目,应用程序将刷新索引,并使用更新后的同义词文件再次分析数据

创建索引时,有一个传递设置的选项

代码语言:javascript
复制
elasticSearchTemplate.createIndex(MyClass.class , Map settings )

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

但是同义词设置在Analyzer模块中。

如果这可以在创建索引时作为设置传递,请恢复

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-05 16:20:59

下面是我找到的最接近的解决方案。

代码语言:javascript
复制
@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

代码语言:javascript
复制
{
  "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"
        }
      }
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42728319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档