【问题标题】:Elastic Search 7.9: exact on multiple fieldsElastic Search 7.9:在多个字段上精确
【发布时间】:2020-08-24 11:47:06
【问题描述】:

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

【问题讨论】:

  • 您能否添加映射、应该出现在输出中的文档以及您在查询中使用的确切值?
  • 嗨 @SahilGupta 原来我忘了关键字类型是区分大小写的。
  • 啊啊啊!!!有时简单的事情会占用太多时间

标签: elasticsearch elasticsearch-7


【解决方案1】:

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

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

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

【讨论】:

  • 关键字是哈希。默认情况下它区分大小写,除非您在某些自定义分析器中使用它。这是您的用例,查询是严格 = 选择 * where field1 === 'word' AND field2 === 'different word' 这也是区分大小写的。
猜你喜欢
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-23
  • 2021-03-09
  • 1970-01-01
相关资源
最近更新 更多