2017-10-28 7 views
1

私はElasticsearch 5.4.1を使用しています。ここにマッピングがあります:Elasticsearchで身体検索をリクエスト

{ 
    "testi": { 
    "mappings": { 
     "testt": { 
     "properties": { 
      "last": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      }, 
      "name": { 
      "type": "text", 
      "fields": { 
       "keyword": { 
       "type": "keyword", 
       "ignore_above": 256 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 

私はURI検索を使用すると結果が表示されます。一方、Request Body検索の使用中には、いずれの場合も空の結果が得られます。ここで起こって

GET testi/testt/_search 
{ 
    "query" : { 
     "term" : { "name" : "John" } 
    } 
} 

答えて

1

カップルの事:lastnameの両方について

  • 、あなたはtextとしてフィールド自体をインデックス化し、その後keywordなどのサブフィールドされています。それはあなたの意図ですか?生フィールドでの分析/トークン化検索と、サブフィールドでのキーワード検索ができるようにしたいのですか?
  • これがあなたの意図ならば、これらのフィールドのそれぞれを照会する2つの方法があります。たとえば、nameはフィールドの解析バージョンを提供します(Elasticsearchはstandard analyzerを適用し、小文字フィルタ、基本的なトークンとステミングなどを適用しました)。name.keywordはこのフィールドの変更されていないキーワードバージョンを提供します
  • したがって、用語クエリでは、入力文字列Johnが、照会しているフィールドで一致するとみなされます。クエリ入力で大文字を使用したため、キーワードサブフィールドをnameに設定して、代わりにを試してみてください。元のフィールドに何が起こっているかの光デモンストレーションとして
  • "term" : { "name.keyword" : "john" }それだけでmatch_allを実行しているので、あなたは_searchで結果を見ている
  • 同様
  • を動作するはずです。基本的なテキストパラメータを渡した場合は、と textの両方のバージョンが利用可能な _allに対して実行されているため、
関連する問題