1. 程式人生 > 資料庫 >Elasticsearch 類比 mysql 實現 in and like or

Elasticsearch 類比 mysql 實現 in and like or

 

常用的查詢方式類比mysql

       <dependency>
            <groupId>org.elasticsearch</groupId>
            <artifactId>elasticsearch</artifactId>
            <version>5.6.1</version>
        </dependency>

        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>transport</artifactId>
            <version>5.6.1</version>
        </dependency>    

 

  • and
select * from user where about='中華人民共和國' and firstName=‘張’

QueryBuilders.boolQuery().must(QueryBuilders.termQuery("about","中華人民共和國")).must(QueryBuilders.termQuery("firstName","張"))
  • or
select * from user where about='中華人民共和國' and firstName=‘王’
QueryBuilders.boolQuery().should(QueryBuilders.termQuery("about","中華人民共和國")).should(QueryBuilders.termQuery("firstName","王"))
  • and or 連用
select * from user where  firstName='張' and( firstName='王’ or about='中華人民共和國公民')

QueryBuilders.boolQuery()
                        .must(QueryBuilders.termQuery("firstName","張"))
                        .must(QueryBuilders.boolQuery()
                                        .should(QueryBuilders.termQuery("firstName","王"))
                                        .should(QueryBuilders.termQuery("about","中華人民共和國公民"))
  • like
select * from user where about like '%中華%'

QueryBuilders.wildcardQuery("about","*中華*")
  • in
select * from user where about in ('中華人民共和國','中華人民共和國公民')

QueryBuilders.boolQuery()
                        .should(QueryBuilders.termQuery("about","中華人民共和國"))
                        .should(QueryBuilders.termQuery("about","中華人民共和國公民"))