Я использую поддержку данных Spring Elticearch через jHipster и пытаюсь узнать немного больше об использовании поиска, поскольку это связано с расширением некоторых новых отношений в моей базе данных.Spring Data Elasticsearch Вложенный запрос
Я получил новые вложенные отношения с его собственным индексом:
@Entity
@Table(name = "friends")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Document(indexName = "friend")
public class Friend {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToOne
@Field(type=FieldType.Nested, index=FieldIndex.analyzed, store=true)
private User friend1;
@OneToOne
@Field(type=FieldType.Nested, index=FieldIndex.analyzed, store=true)
private User friend2;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public User getFriend1() {
return friend1;
}
public void setFriend1(User friend1) {
this.friend1 = friend1;
}
public User getFriend2() {
return friend2;
}
public void setFriend2(User friend2) {
this.friend2 = friend2;
}
}
Я хочу, чтобы отфильтровать результаты конкретного пользователя «friend1.id», и чем поиск для согласования деталей на вложенном документе ?
StreamSupport
.stream(friendSearchRepository.search(
QueryBuilders.boolQuery()
.must(QueryBuilders.matchQuery("friend1.id",SecurityUtils.getCurrentUserId()))
.must(QueryBuilders.matchQuery("friend2.login",query))).spliterator(), false)
.collect(Collectors.toList());
Это, похоже, не возвращает никаких результатов?
Итак, посмотрев [queryStringQuery] (https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html), который включает в себя множество терминов, но несколько примеров, возможно: [имеет дочерний запрос] (https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-has-child-query.html), но разве у меня нет как-нибудь изменить свой индекс? –