2017-12-01 3 views
1

개체 배열이있는 ElasticSearch 쿼리를 수행하고 해당 배열의 모든 항목이 일치하는 조건을 필터링해야합니다.모든 필드가 내 필터와 일치 할 때만 결과를 검색하는 ElasticSearch 쿼리?

다음
PUT myindex 
{ 
    "mappings": { 
    "myindexType":{ 
     "dynamic": "strict", 
     "_all":{ 
     "enabled": false 
     },  
     "properties":{ 
     "thisthing": { 
      "properties": { 
      "thingTypeId": { 
       "type": "keyword" 
      }, 
      "thingId": { 
       "type": "keyword" 
      } 
      } 
     }, 
     "description": { 
      "type": "keyword" 

     }, 
     "text": { 
      "type": "text" 
     } 
     } 
    } 
    } 
} 

내 인덱스 데이터입니다 : 여기

POST myindex/myindexType 
{ 
    "thisthing": [ 
      { 
       "thingId": "1", 
       "thingTypeId": "42" 
      }, 
      { 
       "thingId": "1", 
       "thingTypeId": "43" 
      }, 
      { 
       "thingId": "1", 
       "thingTypeId": "44" 
      } 

      ], 
    "description":"something", 
    "text":"something" 


} 

그리고 쿼리는 내가 지금까지 가지고 있습니다 :

GET _search 
{"query": { 
    "bool": { 
     "must": [ { 
      "match": { 
       "text": { 
        "query": "something", 
        "fuzziness": "Auto", 
        "operator": "and" 
        } 
       } 
      } 
     ], 
     "filter": [ 
      {"term": {"thisthing.thingTypeId": "42" } }, 
      {"term": {"thisthing.thingTypeId": "43" } } 

     ] 
}}} 

내 쿼리 결과를 찾아온다는 때문에 여기 내 매핑입니다 ids (42) 및 (43) 모두가 인덱스 된 데이터에 존재한다. 그러나 인덱싱 된 데이터의 모든 ID가 내 필터에 없으면 결과를 가져 오지 않는 쿼리를 원합니다. 용어 및 검색어 필터링을 행운없이 시도했습니다.

답변

0

배열에서 중첩 된 객체를 사용하여 문제를 해결하십시오. Here 사례에 대한 설명을 찾을 수 있습니다.

+0

응답 해 주셔서 감사합니다.하지만이 기사가 문제를 해결하는 방법을 모르겠습니다. ID 1,2,3이있는 쿼리가 있다고 가정 해 보겠습니다. 색인에는 데이터 1,2,3,4가 있습니다. 데이터에 쿼리에없는 ID가 있으므로 쿼리에서 결과를 반환하지 않아야합니다. 지금까지 본 모든 예는 쿼리에 데이터에있는 ID가 포함되어 있기 때문에 결과를 반환합니다. 나는 실제로 그 반대를 원한다. 감사,,, – suwatechie