我正在使用最新版本的elastic search(7.9),并试图找到一种好的方法来作为and执行多项查询。
基本上我想做的是:
select * where field1 === 'word' AND field2 === 'different word'
我目前正在使用term对field1进行精确的关键字匹配。但是加上第二个字段会让我觉得有点不对劲。
{
"query": {
"term": {
"field1": {
"value": "word"
}
}
}
}
这是我当前的查询,我尝试过使用bool。我在以前的版本中找到了答案,在那里我可以使用过滤查询。但我似乎也不能让它发挥作用。
有人能帮帮我吗。这真让我抓狂。
编辑
以下是我用多个术语的bool/must所做的尝试。但我没有得到任何结果,即使我知道在这种情况下,这个查询应该返回数据
{
"query": {
"bool": {
"must": [
{
"term": {
"field1": {
"value": "word"
}
}
},
{
"term": {
"field2": {
"value": "other word"
}
}
}
]
}
}
}
1条答案
按热度按时间ua4mk5z41#
好吧,有趣的事实。你可以像我试过的那样做布尔/匹配。您应该记住的是,关键字匹配(这是我正在使用的)是区分大小写的。当您将字段的类型设置为关键字时,es不会对数据进行任何分析或过滤。
也可以使用带有过滤器的bool来获得相同的结果(当您考虑类型时)