我正在索引文件的元数据,我的映射看起来像这样:
curl -XPUT "http://localhost:9200/myapp/" -d '
{
"mappings": {
"file": {
"properties": {
"name": {
"type": "string", "index": "not_analyzed"
},
"path": {
"type": "string", "index": "not_analyzed"
},
"user": {
"type": "string", "index": "not_analyzed"
}
}
}
}
}
'
还有其他一些领域,但它们与这个问题无关。这里'name'是文件的名称,'path'是文件的路径,user是该文件的所有者。索引数据时可能类似于:
{ name: 'foo', path: '/', user: 'dude' }
{ name: 'bar', path: '/subfolder/', user: 'dude' }
{ name: 'baz', path: '/', user: 'someotherdude' }
我的问题是如何构建我的查询,以便我可以根据路径和用户进行文件夹列表。因此,搜索用户'dude'和路径'/'应该会导致'foo'。
答案 0 :(得分:6)
您可以使用bool,它允许您指定必须匹配的查询以构成匹配。您的查询将如下所示
{
"query": {
"bool" : {
"must" : [
{ "match": { "user" : "dude" } },
{ "match": { "path" : "/" } }
]
}
},
"fields": ["name"]
}
这样做会检查“dude”和路径“/”是否完全匹配