我是 Elasticsearch 的新手。我想按多个文件过滤
我有一些数据:
{
"_index": "app",
"_type": "test",
"_id": "2121",
"_score": 1,
"_source": {
"id": 2121,
"name": "Toto",
"category": {
"id": 5
},
"state": {
"id": 44
},
"stage": {
"id": 6
},
"userAccepted": [ ],
"userReferred": {
"id": 1
}
}
}
如何按名称、类别和状态进行过滤?
我尝试了很多解决方案,但它不起作用:
{
"query": {
"query_string": {
"query": "name:Toto AND state.id:44 AND category.id:5"
}
}
}
或
{
"query": {
"bool": {
"must": [
{
"query_string": {
"default_field": "category.id",
"query": "5"
}
},
{
"query_string": {
"default_field": "name",
"query": "test"
}
}
]
}
}
}
看看上面的查询,看看是否有帮助谢谢
答案 0 :(得分:0)
您的 Elasticsearch 版本是什么?我在 v7.2 上测试了您的第一次查询尝试,它正确返回了您的示例文档。
如果您要进行复合 must
查询,我建议您使用 match
查询。例如,
{
"query": {
"bool": {
"must": [
{
"match": { "name": "Toto" }
},
{
"match": { "state.id": "44" }
},
{
"match": { "category.id": "5" }
}
]
}
}
}