2016-06-17 6 views
0

私はElasticsearch 1.7を使用していて、以下の問題に遭遇しました: 属性がインデックスのタイプとして指定されている場合、私はより良いあなたに例を示します。弾性検索タイプと属性名の推論

インデックス:

curl -XPUT "http://localhost:9200/myindex/ingredient/1" -d' 
{ 
    "name": "salad" 
}' 

curl -XPUT "http://localhost:9200/myindex/product/1" -d' 
{ 
    "name": "sandwich", 
    "ingredient": { 
    "name": "salad" 
    } 
}' 

フィルタリング:

curl -XGET "http://localhost:9200/myindex/_search" -d' 
{ 
    "query": { 
    "term": { 
     "ingredient.name": "salad" 
    } 
    } 
}' 

応答:

{ 
    "_index": "myindex", 
    "_type": "ingredient", 
    "_id": "1", 
    "_score": 1, 
    "_source": { 
    "name": "salad" 
    } 
} 

問題: 応答がタイプ成分です。私は、attribute.name = "salad"という属性を持つオブジェクトを取得したかったのです。 Elasticsearchは属性名を型として理解します。 product.ingredient.name = "salad"をフィルタリングすると、期待どおりの製品が得られます。

私はフィルターにかけたいもののタイプを得ることができません。タイプではなく、属性名を意味するという別の方法がありますか?

答えて

1

これはelasticsearch:1.xの既知の問題で、1つのフィールドを参照する複数の方法があり、あいまいさにつながります。

は周りの良い方法はありませんそれ以外の

a)のOPで述べたように、明示的にtypeを付加

b)は、特定のtype
http://localhost:9200/myindex/<type>/_search

これはあるに検索を制限しますelasticsearch 2.xで修正されました。これについてはelasticaのblogが良い説明をしています。

+0

ありがとうございました。私はそれを更新しなければならないと思います。 –