Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用多个字段的Elasticsearch Spring存储库搜索_Java_Spring_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Spring Boot - Fatal编程技术网 elasticsearch,spring-boot,Java,Spring,elasticsearch,Spring Boot" /> elasticsearch,spring-boot,Java,Spring,elasticsearch,Spring Boot" />

Java 使用多个字段的Elasticsearch Spring存储库搜索

Java 使用多个字段的Elasticsearch Spring存储库搜索,java,spring,elasticsearch,spring-boot,Java,Spring,elasticsearch,Spring Boot,我有一个Spring启动应用程序连接到一个包含的Elasticsearch实例。我目前可以搜索特定字段,但当我在请求中添加第二个字段时,我没有任何结果(每个字段本身都可以)。我怎样才能得到正确的结果 以下是我的课程: @Document(indexName = "bank", type = "account", replicas = 0) public class Account { @Id private String id; private long account

我有一个Spring启动应用程序连接到一个包含的Elasticsearch实例。我目前可以搜索特定字段,但当我在请求中添加第二个字段时,我没有任何结果(每个字段本身都可以)。我怎样才能得到正确的结果

以下是我的课程:

@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));
    }

}

原来我是在查询页面#1,而不是#0。结果现在显示正确了

[
  {
    "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"
            }
          }
        ]
      }
    }
  }
]