我正在使用Elasticsearch 1.7并遇到以下问题: 当一个Attribute被命名为索引的类型时,我不能过滤属性而不涉及类型名称。我最好给你看一个例子:
索引:
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"
}
}
问题: 响应是类型成分。我想获得具有属性ingredient.name =" salad"的对象。 Elasticsearch将属性名称理解为类型。当我过滤product.ingredient.name =" salad"时,我按预期得到了产品。
我无法获得我想要过滤的东西的类型,是否有另一种说法,我的意思是属性名称,而不是类型?
答案 0 :(得分:1)
这是elasticsearch中的一个已知问题:1.x其中有多种方法可以引用一个导致歧义的字段。
除了
之外没有更好的方法a)明确地在OP
中提到的QSplitter
前置
b)将搜索限制为特定的type
type
这在elasticsearch 2.x中得到修复。来自elastica的blog对此有一个很好的解释。