繁体   English   中英

在 Elasticsearch 中使用多个分析器创建和合并索引

[英]Create and merge indexes using multiple analyzers in Elasticsearch

因此,我在配置 JSON 文件中定义了两个过滤器。 现在,我想一次应用这些过滤器,然后合并结果。

"filter": {
      "autocomplete_filter": {
        "type": "edge_ngram",
        "min_gram": 3,
        "max_gram": 20
      },
      "shingle_filter": {
          "type": "shingle",
          "min_shingle_size": 1,
          "max_shingle_size": 2
      }
    },

例子:

"best mac laptop" -> "best", "mac", "laptop", "best mac", "mac laptop", "bes", "best", "best ", "best m", "best ma", "best mac", ...

像上面一样,我想使用Shingle过滤器创建索引,然后我想在原始数据上创建索引自动完成过滤器,然后在单个文档中组合和创建索引。 是否可以? 有吗?

因此,在仔细查看弹簧数据 Elasticsearch 文档后,我能够使用两个不同的分析器索引相同的字段。

@Document(indexName = "course-doc")
@Setting(settingPath = "es-config/autocomplete.json")
@Getter
@Setter
public class Course {
  @Id
  long id;

  @MultiField(
      mainField = @Field(type = FieldType.Text, analyzer = "autocomplete_index", searchAnalyzer = "autocomplete_search"),
      otherFields = {@InnerField(suffix = "search", type = FieldType.Text, analyzer = "search_index", searchAnalyzer = "autocomplete_search")})
  String name;
}

自动完成.json

{
  "analysis": {
    "filter": {
      "autocomplete_filter": {
        "type": "edge_ngram",
        "min_gram": 2,
        "max_gram": 20
      },
      "shingle_filter": {
          "type": "shingle",
          "min_shingle_size": 1,
          "max_shingle_size": 10
      }
    },
    "analyzer": {
      "autocomplete_search": {
        "type": "custom",
        "tokenizer": "standard",
        "filter": [ "lowercase" ]
      },
      "autocomplete_index": {
        "type": "custom",
        "tokenizer": "standard",
        "filter": [ "lowercase", "stop" , "autocomplete_filter" ]
      },
      "search_index": {
        "type": "custom",
        "tokenizer": "standard",
        "filter": [ "lowercase" , "shingle_filter" ]
      },
      "standard-analyzer": {
        "type": "custom",
        "tokenizer": "standard",
        "filter": [ "lowercase", "stop" ]
      }
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM