【问题标题】:Elastic Search - Pass Synonym while creating index弹性搜索 - 创建索引时传递同义词
【发布时间】:2017-08-01 09:13:55
【问题描述】:

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

下面是我的弹性搜索配置

<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");

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

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

【问题讨论】:

    标签: elasticsearch lucene spring-data-elasticsearch


    【解决方案1】:

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

    @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"
            }
          }
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-01-12
      • 1970-01-01
      • 2019-09-28
      • 2022-08-17
      • 2021-12-14
      • 1970-01-01
      • 2014-09-01
      • 2020-08-16
      • 2019-06-15
      相关资源
      最近更新 更多