2017-08-25 17 views
3

私はfuzzyを使用しており、elasticsearchでヒットだけでなく検索した単語を返すようにします。 私は単語dogoを探していて、ファジー検索では単語dogが見つかりました。それはそれが見つかったのはdogoでした。弾性検索結果が返されました

データ:

{ "index": { "_id":1 }} 
{ "title": "The quick brown fox", "price":5 } 
{ "index": { "_id":2 }} 
{ "title": "The quick blue dog", "price":7 } 
{ "index": { "_id":3 }} 
{ "title": "The slow brown dog", "price":5 } 

クエリ:このクエリは===>dog<===を返しますが、dogoがそれを見つけた場合は知らない

{ 
    "query": { 
    "bool": { 
    "should": [ 
     { 
      "fuzzy": { 
        "title": "dogo" 
         } 

      }, 
     { 
      "fuzzy": { 
        "title": "fox" 
         } 
      } 
     ] 
    } 

    }, 
    "highlight" : { 
     "fields" : { 
      "title":{ 
       "pre_tags": [ 
       "===>" 
       ], 
       "post_tags": [ 
       "<===" 
       ], 
       "fragment_size": 200, 
       "number_of_fragments": 100 
      } 
     } 
    } 
} 

誰でもこのやり方を知っていますか? 出力をdog : dogoのようにしたい。

答えて

4

これには、それぞれのクエリに名前を付けることでnamed queriesを使用できます。結果では、一致するクエリの名前を含むmatched_queriesの配列が各ヒットに表示されます(例:dogofox)。

{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "fuzzy": { 
      "name": { 
       "value": "dogo", 
       "_name": "dogo" 
      } 
      } 
     }, 
     { 
      "fuzzy": { 
      "name": { 
       "value": "fox", 
       "_name": "fox" 
      } 
      } 
     } 
     ] 
    } 
    }, 
    "highlight": { 
    "fields": { 
     "title": { 
     "pre_tags": [ 
      "===>" 
     ], 
     "post_tags": [ 
      "<===" 
     ], 
     "fragment_size": 200, 
     "number_of_fragments": 100 
     } 
    } 
    } 
} 
+0

嬉しいです! – Val

+0

ありがとうございました:) – kemis

1

名前付きクエリは、結果のクエリ名を理解するのに適切な選択です。また、クエリ用語の修正可能な用語を知りたい場合は、提案を試すこともできます。

{ 
    "query": { 
    "bool": { 
    "should": [ 
     { 
      "fuzzy": { 
        "title": "dogo" 
         } 

      }, 
     { 
      "fuzzy": { 
        "title": "fox" 
         } 
      } 
     ] 
    } 

    }, 
    "highlight" : { 
     "fields" : { 
      "title":{ 
       "pre_tags": [ 
       "===>" 
       ], 
       "post_tags": [ 
       "<===" 
       ], 
       "fragment_size": 200, 
       "number_of_fragments": 100 
      } 
     } 
    } , 
"suggest" : { 
    "title_suggestion" : { 
     "text" : "fox dogo", 
     "term" : { 
     "field" : "title" 
     } 
    } 
    } 
} 
関連する問題