2016-10-03 11 views
1

私はElasticSearchのJava APIに次のクエリを変換しようとしています "べき":ElasticSearchのJava APIは、Array

GET /consumer/_search 
{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "bool": { 
      "must": [ 
       { 
       "match": { 
        "first_name": { 
        "query": "Peter" 
        } 
       } 
       }, 
       { 
       "match": { 
        "last_name": { 
        "query": "Parker" 
        } 
       } 
       } 
      ] 
      } 
     }, 
     { 
      "bool": { 
      "must": [ 
       { 
       "match": { 
        "first_name": { 
        "query": "Parker" 
        } 
       } 
       }, 
       { 
       "match": { 
        "last_name": { 
        "query": "Peter" 
        } 
       } 
       } 
      ] 
      } 
     } 
     ] 
    } 
    } 
} 

は、私は次のことを試してみました:

query = QueryBuilders.boolQuery() 
    .should(QueryBuilders.boolQuery() 
    .must(QueryBuilders.matchQuery("first_name", "Peter").type(null)) 
    .must(QueryBuilders.matchQuery("last_name""Parker").type(null)) 
    .must(QueryBuilders.matchQuery("first_name","Parker").type(null)) 
    .must(QueryBuilders.matchQuery("last_name","Peter").type(null))) 

私も試してみました:

.should(QueryBuilders.boolQuery() 
.must(QueryBuilders.matchQuery("first_name", "Peter").type(null)) 
.must(QueryBuilders.matchQuery("last_name", "Parker").type(null)) 
.should(QueryBuilders.boolQuery() 
.must(QueryBuilders.matchQuery("first_name", "Parker").type(null)) 
.must(QueryBuilders.matchQuery("last_name", "Peter").type(null)))) 

しかし、私が作成したのと同じクエリが生成されていません。どのように私はこれを作成することができますか?いくつかの単語で

、最初のクエリは、次のことをやっている:

Select * from consumer where first_name='Peter' and last_name='Parker' OR first_name='Parker' and last_name='Peter'

は、私はあなたの第二の試みが近くだったと思うあなた

答えて

2

をありがとう、あなたが最初にすべき句を閉じる必要があります。 SO

を問うあなたはまた thisを見て、 wrapperQueryにJSON文字列を渡すことができ、この

query = QueryBuilders.boolQuery() 
     .should(QueryBuilders.boolQuery() 
      .must(QueryBuilders.matchQuery("first_name", "Peter").type(null)) 
      .must(QueryBuilders.matchQuery("last_name", "Parker").type(null))) 
     .should(QueryBuilders.boolQuery() 
      .must(QueryBuilders.matchQuery("first_name", "Parker").type(null)) 
      .must(QueryBuilders.matchQuery("last_name", "Peter").type(null))) 

をお試しください

関連する問題