我已成功编制索引文档,因此我的意思是在创建新字段(动态)的同时创建了映射。
{
"user":"living_team",
"timestamp":"2015-12-14T18:06:47.085Z",
"matter":"snip2.PNG",
"comment":"Archive",
"channel":"Feina",
"feedTypes":[
20
],
"property_general_ldate":"2015-12-14T18:06:47.085Z",
"property_tSize":7595.0,
"resources":[
{
"timestamp":"2015-12-14T16:58:00.598Z",
"matter":"snip2.PNG",
"comment":"Archive",
"channel":"Feina",
"feedType":20,
"mime":"image/png",
"source":{
"sourceId":{
"id":"C:\\Users\\Beep\\Desktop\\share\\snip2.PNG",
"batch":"c38eec2d-a282-11e5-baf4-382c4ab9e433",
"client":"VIM12HCNZL"
},
"feedType":20,
"property_folder":"C:\\Users\\Beep\\Desktop\\share",
"property_lastAccessFolder_ldate":1450111821506
},
"property_size":7595.0,
"property_creation_ldate":"2015-12-14T16:50:20.578Z",
"property_name":"snip2.PNG",
"nestedResources":[
]
}
]
}
我需要获取以下文件:resources.source.sourceId.id is exactly "X"
。我已尝试过此查询,但其结果为空。
curl -XGET 'http://ESNode01:9201/living_team/inputs/_search?pretty' -d '{
"query":{
"filtered":{
"query":{
"term":{
"resources.source.sourceId.batch":"3fcb8905-a307-11e5-88de-382c4ab9e433"
}
},
"filter":{
"match":{
"channel":"FeINa"
}
}
}
}
}'
答案 0 :(得分:10)
与your other question中的问题相同,即resources.source.sourceId.batch
字符串字段已创建为analyzed
字段,因此值c38eec2d-a282-11e5-baf4-382c4ab9e433
具有已被标记为五个令牌c38eec2d
,a282
,11e5
,baf4
,382c4ab9e433
。
处理此问题的正确方法是为该字段设置特定的not_analyzed
映射。
另一种暂时的方法是使用完全匹配的query_string
查询:
curl -XGET 'http://ESNode01:9201/living_team/inputs/_search?pretty' -d '{
"query":{
"filtered":{
"query":{
"query_string":{
"query": "resources.source.sourceId.batch:\"3fcb8905-a307-11e5-88de-382c4ab9e433\""
}
},
"filter":{
"match":{
"channel":"FeINa"
}
}
}
}
}'
答案 1 :(得分:2)
此外,如果您不想在模板中添加每个UUID字段,则可以使用terms
条件或term
并在每个-
上拆分您的UUID字符串
我对性能不确定......但它确实可以解决问题。
您的查询中应该有类似内容:
curl -XGET 'http://ESNode01:9201/living_team/inputs/_search?pretty' -d '{
"query":{
"filtered":{
"query":{
"terms":{
"resources.source.sourceId.batch":["3fcb8905", "a307", "11e5", "88de", "382c4ab9e433"]
}
},
"filter":{
"match":{
"channel":"FeINa"
}
}
}
}
}'