구글 앱 엔진에서 간단히 데이터 좀 불러오려는데, 위와 같은 에러가 떴다. 코드를 봐도 잘못 작성한 데가 없는데 왜 이럴까 해서 에러를 한 번 다시 살펴보았다.
no matching index found. This query needs this index: - kind: PLPopularity properties: - name: date - name: domain - name: language

아래는 에러를 발생시킨 라인. 

results = PLPopularity.all().filter('date =', date.today()).filter('domain =', domain).order('language').fetch(100)

뭐가 문제인가 싶어 에러 메시지를 구글링해보니 인덱스만 추가해주면 괜찮단다. 응? 난 index.yaml에 분명 database 정의해 놓았는데? 난 이미 내 데이터베이스에 대한 인덱스를 가지고 있는데?


그래서 구글 문서를 찾아보니, 여러개의 필터나 정렬을 사용할 경우 해당 쿼리에 맞는 인덱스를 작성해 주어야 한단다.  

내가 작성해둔 인덱스는 

- kind: PLPopularity
  properties:
  - name: date
  - name: domain
  - name: language
    direction: asc
  - name: num  

이지만, 내 쿼리에서는 num 필드를 사용 안하므로, 아래와 같이 num 필드를 빼고 작성해 주어야 한다. 

- kind: PLPopularity
  properties:
  - name: date
  - name: domain
  - name: language
    direction: asc

direction도 쿼리와 같은 방향으로 설정해 주어야지 그렇지 않으면 인덱스가 없다는 에러가 또 뜬다. 

아래는 인덱스에 관련된 구글 원문.
Why do my queries need to be covered by indexes, and how do I include them?

If you run a query that filters on multiple entity properties or orders results by multiple properties, you will need an index for that query. You must have an index for every query of that kind that you run with your application. The datastore index for a query maintains and updates a list of keys sorted in the manner that the query specifies to allow speedy access to the data in your datastore. A full explanation of datastore indexes can be found in our documentation (Java | Python).

When you develop your application with Google App Engine SDK, every query you run automatically gets indexed when necessary. If you thoroughly test your application before uploading it to your website, all of the indexes your application will need will be included in your application's datastore-indexes.xml (Java) orindex.yaml (Python) files. You may manually add indexes if you find a query that was not covered by your development testing. For more information on how to write indexes for your application, see the index documentation (Java | Python).

출처: http://code.google.com/appengine/kb/general.html#indexes

이름 :
비밀번호 :
홈사이트 :
비밀글 :
*1  *2  *3  *4  *5  *···  *13 
count total 269,098, today 0, yesterday 4
달력
«   2019/05   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
알립니다
I am
분류 전체보기
일상다반사
책 리뷰
On the Web
무술 수련
About me
꼴지 동경대를 가다를 통해..
글 보관함
2011/03, 2011/02, 2010/12, 2010/11, 2010/09,
rss