Elastic Search 7.9:在多个字段上完全相同

问题描述

我正在使用最新版本的Elastic Search(7.9),并且我试图找到一种以AND的方式进行多项查询的好方法。

基本上我想做的是:

DATE                RATE
31DEC2014           0.1600    
31DEC2015           0.1600    
31DEC2016           0.1600    
31DEC2017           0.1600
31DEC2018           0.1700
31DEC2019           0.1770

我目前正在使用term在field1上进行完全匹配的关键字。但是添加第二个字段会给我带来一些麻烦。

select * where field1 === 'word' AND field2 === 'different word'

这是我当前的查询,我尝试使用BOOL。我在以前的版本中遇到了答案,在这里我可能会使用过滤的查询。但是我似乎也无法使它正常工作。

有人可以帮我吗。真是发疯了。

编辑

这是我尝试使用bool /必须使用多个术语的内容。但是即使我知道在这种情况下该查询应该返回数据,我也没有得到结果

{
    "query": {
        "term": {
            "field1": {
                "value": "word"
            }
        }
    }
}

解决方法

好吧,有趣的事实。您可以按照我的尝试进行布尔/匹配。您应该记住的是,关键字匹配(这就是我正在使用的关键字)区分大小写。将字段的类型设置为关键字时,ES不会对数据进行任何分析或过滤。

还可以使用带有过滤器的布尔值来获得相同的结果(当您考虑类型时)

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...