1

Spring データのエラスティック検索を使用しようとしています。このSpring Data Elastic Search with Nested Fields and mappingsも読みました

次の例外を取得します。

原因: org.elasticsearch.action.search.SearchPhaseExecutionException: フェーズ [dfs] の実行に失敗しました。すべてのシャードが失敗しました。shardFailures {[-EbBygdLRkKs49wqsf5ewQ][support_team_idx][0]: RemoteTransportException[[Artie][local[6]][indices:data/read/search[phase/dfs]]]; ネストされた: SearchParseException[[support_team_idx][0]: from[0]、size[10]: 解析失敗 [ソースの解析に失敗しました [{"from":0,"size":10,"query":{"nested" :{"query":{"bool":{"must":[{"term":{"supportteam.name":"test"}},{"term":{"supportteam.description":"test" }}]}},"パス":"サポートチーム"}}}]]]; ネストされた: QueryParsingException[[support_team_idx] [ネストされた] パス [SupportTeam] の下にネストされたオブジェクトが見つかりませんでした]; }

実在物:

  @Document(indexName = "support_team_idx", type = "support_team_type", indexStoreType= "memory", shards = 1, replicas = 0,  refreshInterval = "-1")
public class SupportTeam extends BaseEntity implements Serializable {
  private static final long serialVersionUID = 1L;

  @Field(type=FieldType.String, index=FieldIndex.analyzed)
  private String name;
  @Field(type=FieldType.String, index=FieldIndex.analyzed)
  private String description;

  @ManyToOne(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE})
  @JoinColumn(name = "org_unit_id", unique = false)
  @Field(type=FieldType.Nested)
  private OrgUnit orgUnit;

  @OneToMany(mappedBy = "supportTeam", fetch = FetchType.EAGER)
  @Field(type = FieldType.Nested)
  private Set<SupportTeamMember> supportTeamMembers;

  public SupportTeam() {}
 }

log.info("Initializing Indexs");
    RootConfig.elasticsearchTemplate().deleteIndex(SupportTeam.class);
    RootConfig.elasticsearchTemplate().createIndex(SupportTeam.class);
    RootConfig.elasticsearchTemplate().putMapping(SupportTeam.class);
    RootConfig.elasticsearchTemplate().refresh(SupportTeam.class, true);

....

 SearchQuery searchQuery = new NativeSearchQueryBuilder()
 .withQuery(nestedQuery("SupportTeam",           
  boolQuery().must(termQuery("supportteam.name", .
  searchText)).must(termQuery("supportteam.description", searchText))))
 .withIndices("support_team_idx").build();
4

0 に答える 0