elastic search 7.9:在多个字段上精确搜索

new9mtju  于 2021-06-15  发布在  ElasticSearch
关注(0)|答案(1)|浏览(380)

我正在使用最新版本的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"
                        }
                    }
                }
            ]
        }
    }
}
ua4mk5z4

ua4mk5z41#

好吧,有趣的事实。你可以像我试过的那样做布尔/匹配。您应该记住的是,关键字匹配(这是我正在使用的)是区分大小写的。当您将字段的类型设置为关键字时,es不会对数据进行任何分析或过滤。
也可以使用带有过滤器的bool来获得相同的结果(当您考虑类型时)

{
    "query": {
        "bool": {
            "must": 
                {
                    "term": {
                        "field1": {
                            "value": "word"
                        }
                    }
                },
            "filter":
                {
                    "term": {
                        "field2": {
                            "value": "other word"
                        }
                    }
                }
        }
    }
}

相关问题