0
私は、Springブートアプリケーションをthis sample dataを含むElasticsearchインスタンスに接続しています。私は現在、特定のフィールドを検索することができますが、リクエストに2番目のフィールドを追加すると、結果はありません(各フィールドはそれぞれ独自のものです)。どうすれば正しい結果を得ることができますか?ここで複数のフィールドを使用したElasticsearch Springリポジトリ検索
は私のクラスである:ここでは
@Document(indexName = "bank", type = "account", replicas = 0)
public class Account {
@Id
private String id;
private long accountNumber;
private long balance;
private String firstname;
private String lastname;
private long age;
private String gender;
private String address;
private String employer;
private String email;
private String city;
private String state;
}
public interface AccountRepository extends ElasticsearchRepository<Account, String> {
Page<Account> findByGenderAndStateAllIgnoreCase(String gender, String state, Pageable pageable);
}
@Service
public class AccountServiceImpl implements AccountService {
@Autowired
private AccountRepository repository;
@Override
public Account save(Account account) {
return repository.save(account);
}
@Override
public Account findOne(String id) {
return repository.findOne(id);
}
@Override
public Collection<Account> findAll(PageRequest request) {
return repository.findAll(request).getContent();
}
@Override
public Collection<Account> findByGenderAndState(String gender, String state, PageRequest request) {
return repository.findByGenderAndStateAllIgnoreCase(gender, state, request).getContent();
}
}
@Controller
@RequestMapping("/bank")
public class BankController {
@Autowired
private AccountService accountService;
@GetMapping("/accounts")
public
@ResponseBody
Collection<Account> accounts(@RequestParam(name = "gender", required = false, defaultValue = "*") String gender,
@RequestParam(name = "state", required = false, defaultValue = "*") String state,
@RequestParam(name = "page", required = false, defaultValue = "0") int page,
@RequestParam(name = "size", required = false, defaultValue = "10") int size) {
return accountService.findByGenderAndState(gender, state, new PageRequest(page, size));
}
}
は春ブーツからElasticsearchするために送信されるクエリです:
[
{
"from": 20,
"size": 20,
"query": {
"bool": {
"must": [
{
"query_string": {
"query": "f",
"fields": [
"gender"
],
"default_operator": "and"
}
},
{
"query_string": {
"query": "dc",
"fields": [
"state"
],
"default_operator": "and"
}
}
]
}
}
}
]