2017-01-26 15 views
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" 
      } 
      } 
     ] 
     } 
    } 
    } 
] 

答えて

0

は、私が代わりに#の、ページ#1を照会して判明します0。結果は正しく表示されています。

関連する問題