1

で使用しようとしましPercolatorElasticsearchが、小さな問題があります。

ドキュメントが次のようになっているとします。

{
    "doc": {
        "full_name": "Pacman"
        "company": "Arcade Game LTD",
        "occupation": "hunter", 
        "tags": ["Computer Games"]
    }
}

登録したクエリは次のようになります。

{
    "query": {
        "bool": {
            "must": [
               {
                   "match_phrase":{
                       "occupation":  "hunter"
                   }
               },
               {
                   "terms": {
                       "tags":  [
                           "Computer Games",
                           "Electronic Sports"
                           ],
                       "minimum_match": 1
                   }
               }
            ]
        }
    }
}

私は得る:

{
   "took": 3,
   "_shards": {
      "total": 5,
      "successful": 5,
      "failed": 0
   },
   "total": 0,
   "matches": []
}

terms登録されたクエリから削除して一致させると、期待どおりに機能し、1つの一致が得られるため、何が間違っているのかわかりませんoccupation

ヒントはありますか?

更新 1

OK、@Slamのソリューションは正しい方向だと思いますが、まだいくつかの問題があります:

タグのマッピングを更新したので、次のようになりました。

"tags": {
    "store": True,
    "analyzer": "snowball",
    "type": "string",
    "index": "analyzed",
    "fields": {
        "raw": {
           "type": "string",
           "index": "not_analyzed"
       }
    }
}

パーコレートする新しいドキュメント:

{
    "doc": {
        "full_name": "Pacman"
        "company": "Arcade Game LTD",
        "occupation": "hunter", 
        "tags.raw": ["Computer Games"]
    }
}

上記のドキュメントを と照合しようとしてtags.rawも、まだ一致が見つかりません。フィールドを分析tags.rawしましたが、まだトークンcomputergamesおよびを作成しているようrunningです。

4

1 に答える 1