私はElasticSearchを初めて利用しています。 UserクラスにUserStatusを表す文字列フィールドがあり、特定のステータスのすべてのユーザーを検索する必要があります。 リレーショナルDBでは、それはまさに "どこに.."です。"where .. in" Java APIを使用したanalog elasticsearch
さまざまな組み合わせでtermsQuery
を使用して例を見ましたが、それらを機能させることはできませんでした(クエリは何も返しませんでした)。
したがって、問題は次のとおりです。例全体またはそのような問題に直面した誰かを示すリンクがありますか? 喜んで助けてください!
//エンティティ自体
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
@Document(indexName = "users", type = "user")
public class User {
@Id
private String id;
private String userStatus;
private String firstName;
private String lastName;
private Date dateCreated;
}
//春のサービスメソッド
@Override
public List<User> findByParams(UserSearchRequest userSearchRequest) {
TermsQueryBuilder termsQueryBuilder = QueryBuilders
.termsQuery("userStatus", userSearchRequest.getUserStatuses());
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(boolQuery().must(termsQueryBuilder))
.withPageable(new PageRequest(0, 100))
.build();
return Lists.newArrayList(userRepository.search(searchQuery));
}
// REST要求オブジェクト
@AllArgsConstructor
@NoArgsConstructor
@Data
public class UserSearchRequest {
private List<String> userStatuses;
}
は、あなたの代わりにJavaの経由のelasticsearchする直接クエリ(カールまたはWebベースのUIのいくつかの並べ替え)を実行しようとしています?通常それは私を助けるものです – sfat
私は@sfatに同意し、直接弾性検索クエリを試してみてください。以下は、特定の条件に基づいて値の値を取得するためのクエリです。 – Sree
クエリの例を次に示します。{"constant_score":{"filter":{"bool":{"should":[{"term":{"employee": "foo"}}}} }}}。メソッド - >投稿、URL - > http:// localhost:9200///_search。 –
Sree