2017-09-14 10 views
0

私は奇妙な問題に遭遇しています。いずれかのプロパティがネストされたオブジェクトであるドキュメントマッピングがあります。ElasticSearchクエリは、 "空の"ネストされたプロパティを持つドキュメントを返しません。

一部のuserLogにはイベントがありますが、そうでないものもあります。しかし、私のクエリはイベントを持っているuserLogsだけを返すので、私はなぜそれがわかりません。間違いなく、インデックスにイベントが存在しないuserLogが存在します。木場で見ることができます。彼らは検索で返されません。

GET index_name/_search 
{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "range": { 
      "date": { 
       "gte": "20170913", 
       "format": "yyyyMMdd" 
      } 
      } 
     } 
     ], 
     "should": [ 
     { 
      "match_phrase": { 
      "userInfo.userId": "Xvo9qblajOVaM3bQQMaV4GKk7S42" 
      } 
     } 
     ], 
     "minimum_number_should_match": 1 
    } 
    } 
} 

には、次のように私は私のクエリを変更this discussion

に基づいて:ここで私は、クエリのために実行しているんだよ

GET one20_eld_portal/_search 
{ 
    "query": { 
    "bool": { 
     "must_not": [ 
     { 
      "nested": { 
      "path": "events", 
      "query": { 
       "bool": { 
       "filter": { 
        "exists": { 
        "field": "events.userId" 
        } 
       } 
       } 
      } 
      } 
     } 
     ], 
     "should": [ 
      { 
      "match_phrase": { 
       "userInfo.uid": "Xvo9qblajOVaM3bQQMaV4GKk7S42" 
      } 
      } 
     ], 
     "minimum_should_match": 1 
     } 
    } 
} 

が、これはどの結果を返しません。 。どんな助けでも大歓迎です!

+1

2つのクエリを投稿しました。私が集めたものとして、最初のクエリは実行されており、2番目のクエリは実行されていませんか?私が間違っていると私を訂正してください。 – Richa

+0

@リチャ私はこれまでに試したことを示していました。 2番目のクエリでは結果は返されませんが、最初のクエリでは空ではないイベントの結果のみが返されます – beardo34

+0

もう1つの質問..ドキュメントで満たすべき基準は何ですか?最初のクエリ 'date'によれば、userInfo.userIdは' Xvo9qblajOVaM3bQQMaV4GKk7S42'でなければなりません。 2番目のクエリでは、events.userIdが存在してはいけません.userInfo.userIdは 'Xvo9qblajOVaM3bQQMaV4GKk7S42'である必要があります。どちらも違います。あなたは簡単な言葉で説明できますか?私はそれを弾性クエリ – Richa

答えて

0

「空の」ログが返されなかったのは、空のログに対してuserIdが正しく設定されていなかったためです。

関連する問題