@Transient с аннотированным полем @Field, не отображаемым в индексе на эластичном сервере - PullRequest
0 голосов
/ 12 июня 2019

Использование Hibernate Search 5.9 и эластичного сервера 5.6.10.

Я пытаюсь сохранить данные из 3 полей в одно поле с аннотацией @Transient. Но хотя поля отображаются в структуре индекса, то же самое не отображается при запросе индекса с помощью curl / chrome. Его нет в индексе, и данные теряются таким образом.

Код:

@Transient
                @Field(index=Index.YES, analyze=Analyze.YES, store=Store.YES)
                private String fullAgentNumber = "";

                public String getFullAgentNumber() {
                                return this.fillr1 +""+ this.rpt0agt0nr +""+ this.fillr2;
                }

Результат по индексу:

{
  "took" : 3,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 1.0,
    "hits" : [
      {
        "_index" : "master_policy_index",
        "_type" : "com.csc.pt.svc.data.to.Basclt1400TO",
        "_id" : "00,0004087,WCV,05,00",
        "_score" : 1.0,
        "_source" : {
          "id" : "00,0004087,WCV,05,00",
          "location" : "00",
         "symbol" : "WCV",
          "module" : "00",
          "policy0num" : "0004087",
          "master0co" : "05",
          "cltseqnum" : 277,
          "addrseqnum" : "1",
          "policies" : [
            {
              "location" : "00",
              "symbol" : "WCV",
              "module" : "00",
              "policy0num" : "0004087",
              "master0co" : "05",
              "trans0stat" : "P",
              "id02" : "02",
              "eff0yr" : "118",
              "eff0mo" : "03",
              "eff0da" : "15",
              "exp0yr" : "119",
              "exp0mo" : "03",
              "exp0da" : "15",
              "fillr1" : "000",
              "rpt0agt0nr" : "0",
              "fillr2" : "358",
              "tot0ag0prm" : "0.00",
              "line0bus" : "WCV",
              "issue0code" : "N",
              "type0act" : "NB"
            }
          ]
        }
      }
    ]
  }
}

Ожидайте, что во временном поле будут храниться данные, которые я пытаюсь сохранить при создании индекса. Также я полагаю, что как только у поля есть данные, оно тоже обновится, если обновятся поля, на которые он ссылается?

1 Ответ

0 голосов
/ 13 июня 2019

Вы добавили аннотацию @Field в поле объекта, которое, по-видимому, всегда пусто. Таким образом, Hibernate Search всегда будет индексировать пустую строку.

Вам не нужно поле объекта для переходных методов. Попробуйте это:

@Transient
                @Field(index=Index.YES, analyze=Analyze.YES, store=Store.YES)
                public String getFullAgentNumber() {
                                return this.fillr1 +""+ this.rpt0agt0nr +""+ this.fillr2;
                }
...