2016-09-13 4 views
0

내 ES를 쿼리하려고하는데, 여기에 내 데이터가 있습니다. 이 의미로만 실행할 수 있으며 인덱스 fst를 만들고 4 개의 항목으로 채 웁니다. 그러면 잘못된 결과를 반환한다는 것을 알 수 있습니다. 결과가 하나만 필요합니다.탄성 검색 쿼리 용어가 모든 데이터를 반환합니다.

PUT fst/objects/ggg 
{ 
    "frameAttributes": { 
    "identities": [ 
    { "_id": "DSC00263", "_score": 0.655822}, 
    { "_id": "DSC00262", "_score": 0.59957 }, 
    { "_id": "DSC00244", "_score": 0.220819}, 
    { "_id": "DSC00300", "_score": 0.191191}, 
    {"_id": "DSC00276", "_score": 0.124561} 

    ] 
    } 
} 
PUT fst/objects/ffffff 
{ 
    "frameAttributes": { 
    "identities": [ 
     {"_id": "DSC00222","_score": 0.191009}, 
     {"_id": "DSC00261","_score": 0.146157}, 
     {"_id": "DSC00329","_score": 0.14518}, 
     {"_id": "DSC00225","_score": 0.12622}, 
     {"_id": "DSC00295","_score": 0.12396} 
     ] 
    } 

} 
PUT fst/objects/aaaa 
{ 
    "frameAttributes": { 
     "identities": [ 
     {"_id": "DSC00229","_score": 0.223149}, 
     {"_id": "DSC00240","_score": 0.178388}, 
     {"_id": "DSC00228","_score": 0.173769}, 
     {"_id": "DSC00257","_score": 0.166746}, 
     {"_id": "DSC00226","_score": 0.153071} 
     ] 
    } 
} 
put fst/objects/abcdef 
{ 
    "frameAttributes": { 
    "identities": [ 
     { "_id": "DSC00262","_score": 0.427957}, 
     {"_id": "DSC00263","_score": 0.408772}, 
     {"_id": "DSC00282","_score": 0.284546 }, 
     { "_id": "DSC00283","_score": 0.191374}, 
     {"_id": "DSC00299", "_score": 0.165478} 
     ] 
    } 
} 

내 쿼리는 하나 개의 결과를 반환해야합니다

get fst/_search 
{ 
    "query": { 
     "term": { 
      "frameAttributes.identities._id": { 
       "value": "DSC00229" 
      } 
     } 
    } 
} 

답변

2

당신은 not_analyzed으로 필요한 필드를 설정해야합니다. 귀하의 경우 필드는 _id입니다. 인덱스를 만드는 동안 그렇게 할 수 있습니다.

PUT /gb/_mapping/tweet 
{ 
    "properties" : { 
    "tag" : { 
     "type" : "string", 
     "index": "not_analyzed" 
    } 
    } 
} 

확인 참조 링크 : 예를 들어