Как добавить анализатор во вложенные поля в весенних данных эластичного поиска?

У меня есть схема, которая фактически включает вложенный тип, как показано ниже.

Это основная схема.

@Document(indexName = "agreement")
public class PromotionSearchSchema {

@Field(type = FieldType.Nested, includeInParent = true)
    private Promotion promotionproduct;

}

Теперь продвижение — это еще один объект внутри основной схемы. Поэтому я пометил его как вложенный тип. В объекте «Реклама» я пытаюсь добавить анализатор, как показано ниже.

@Setting(settingPath = "es-config/elastic-analyzer.json")
public class Promotion {

 @Field(type = FieldType.Text, analyzer = "autocomplete_index", searchAnalyzer = "autocomplete_search")
    private String promotionDescription;

}

Это мой эластичный анализатор.json

{
  "analysis": {
    "filter": {
      "autocomplete_filter": {
        "type": "edge_ngram",
        "min_gram": 1,
        "max_gram": 20
      }
    },
    "analyzer": {
      "autocomplete_search": {
        "type": "custom",
        "tokenizer": "standard",
        "filter": [
          "lowercase"
        ]
      },
      "autocomplete_index": {
        "type": "custom",
        "tokenizer": "standard",
        "filter": [
          "lowercase",
          "autocomplete_filter"
        ]
      }
    }
  }
}

Когда мне нравится, это вовсе не создание полных сопоставлений в Elasticsearch. Он просто создает, как показано ниже

{
  "agreement" : {
    "mappings" : { }
  }
}

Итак, мой вопрос заключается в том, как добавить анализаторы во вложенный тип. Любая помощь будет оценена по достоинству.


person coders    schedule 30.06.2020    source источник


Ответы (1)


Добавьте аннотацию @Setting к объекту верхнего уровня.

person P.J.Meisch    schedule 30.06.2020
comment
Хорошо, тогда не нужно добавлять к его дочернему элементу, я думаю? - person coders; 02.07.2020