2016-06-28 30 views
3
に文書属性に一致しているどのように私はこのような値の配列である属性持つ多くの文書まし

クエリ:配列の要素数がElasticSearch

{ 
    "_index": "myindex", 
    "_type": "mytype", 
    "_id": "myid1", 
    "_source": { 
     "tags": [ 
     "devid", 
     "batman", 
     "obama" 
     ] 
    } 
},  
{ 
    "_index": "myindex", 
    "_type": "mytype", 
    "_id": "myid2", 
    "_source": { 
     "tags": [ 
     "devid", 
     "superman" 
     ] 
    } 
} 

私は要素の配列を持っていますlike:["devid", "batman", "pippo"]

配列の少なくとも1つの要素と一致するすべての文書を、一致する要素の数でソートしたいとします。 たとえば、myid1myid2よりも高いスコアを持つことが期待されます。

どうすればいいですか?

私はここに「スタック」だ瞬間:

{ 
    "query": { 
    "function_score": { 
     "query": { 
     "filtered": { 
      "query": { 
      "match_all": {} 
      }, 
      "filter": { 
      "terms": { 
       "tags": ["devid", "batman", "pippo"] 
      } 
      } 
     } 
     } 
    } 
    } 
} 

それが唯一の条件でフィルタリングし、両方のスコアとして1を設定します。

私はnoobとelasticsearchを使用しています。

答えて

1

フィルタの代わりにterms queryを使用すると、一致する語句が多い文書のスコアが高くなります。

例:あなたの助けを

{ 
    "query": { 
     "terms": { 
     "tags": [ 
      "devid", 
      "batman", 
      "pippo" 
     ] 
     } 
    } 
} 
+0

ありがとう!うん、これはおそらく解決策です。明日テストして受け入れるつもりです。 –

+0

PS:あなたが多くのelasticsearchの質問に答えたのを見ました。それを改善する方法についてのヒントはありますか?どんなコース、オンラインリソース、ecc .. PPS:私は、オンラインドキュメントは非常に使いやすいとはいえ、完全ではないと思いますか? ありがとうございました –

+0

既にこの問題を抱えていても[最終ガイド](https://www.elastic.co/guide/en/elasticsearch/guide/2.x/index.html)が役立っているかどうかは不明です。 – keety