0
我是ElasticSearch的新手。 我在我的User類中有一個字符串字段,代表UserStatus,我需要搜索處於特定狀態的所有用戶。 在關係數據庫中,它完全是「where .. in」。「where .. in」模擬elasticsearch與Java API
我看到的例子,使用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;
}
你嘗試運行直接查詢到elasticsearch(捲曲或某種基於Web的用戶界面),而不是通過Java ?通常這就是幫助我 – sfat
我同意@sfat,嘗試與直接彈性搜索查詢。以下是基於特定條件檢索值的查詢。 – Sree
下面是一個查詢{「query」:{「constant_score」:{「filter」:{「bool」:{「should」:[{「term」:{「employee」:「foo」}}]}} }}}。方法 - >發佈,網址 - > http:// localhost:9200///_search。 –
Sree