我有一个关于Elasticsearch DSL的问题。范围Elasticsearch针对特定Ids的结果
我想做一个全文搜索,但将可搜索记录的范围扩展到特定数据库ID的数组。
在SQL世界中,它的功能等同于WHERE id IN(1, 2, 3, 4)
。
我一直在研究,但我发现Elasticsearch查询DSL文档有点神秘,缺乏有用的例子。任何人都可以将我指向正确的方向吗?
我有一个关于Elasticsearch DSL的问题。范围Elasticsearch针对特定Ids的结果
我想做一个全文搜索,但将可搜索记录的范围扩展到特定数据库ID的数组。
在SQL世界中,它的功能等同于WHERE id IN(1, 2, 3, 4)
。
我一直在研究,但我发现Elasticsearch查询DSL文档有点神秘,缺乏有用的例子。任何人都可以将我指向正确的方向吗?
这是一个示例查询,它可能适用于您。这假设_all
字段已在您的索引上启用(这是默认值)。它会在索引中的所有字段中进行全文搜索。此外,通过添加ids
筛选器,该查询将排除其ID不在给定数组中的任何文档。
{
"bool": {
"must": {
"match": {
"_all": "your search text"
}
},
"filter": {
"ids": {
"values": ["1","2","3","4"]
}
}
}
}
希望这会有所帮助!
您可以创建一个包含必须的第一个IDS查询布尔查询: https://www.elastic.co/guide/en/elasticsearch/reference/2.0/query-dsl-ids-query.html
通过在布尔查询使用MUST条款,您的搜索将进一步通过您指定的ID限制。我在这里假设您是指您的文档的_id值。
谢谢布鲁克!这正是我所期待的。语法的细微差别非常有帮助。非常感谢。 – mindtonic
不客气,很高兴提供帮助。与ES玩得开心! – BrookeB
是的,它非常强大。我绝对喜欢它,只需要一点点帮助导航语法。再次感谢! – mindtonic