2014-10-29 5 views
0

나는 이런 식으로 뭔가를 할 노력하고있어 :Elasticsearch 및 쿼리

SELECT * FROM x WHERE __account_id = 5 AND __import_id IN [1,2,3] 

여기 내 ES 쿼리입니다 :

body = { 
    "query": { 
     "filtered" : { 
      "filter" : { 
       "term" : { 
        "__account_id" : account.id, 
        "__import_id": [x['id'] for x in ingested_imports] 
       } 
      } 
     } 
    } 
} 

결과는 __account_id에 있지만 __import_id 필터링 것으로 보인다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

1

두 절이 일치해야하므로 쿼리에서 termterms 필터를 래핑해야합니다.

{ 
    "query":{ 
    "filtered":{ 
     "filter":{ 
     "bool":{ 
      "must":[ 
      { 
       "term":{ 
       "__account_id":5 
       } 
      }, 
      { 
       "terms":{ 
       "__import_id":[1, 2, 3] 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 
+0

의미가 있습니다. 난 그냥 내 파이썬 클라이언트를 사용하여 잘 작동하지만 kopf에서 작동하지 않는 것으로 나타났습니다. 그게 뭔지 확실하지 않습니다. – hanleyhansen