首页 文章

弹性搜索查询中的完全匹配

提问于
浏览
5

我想在一个 message 字段中完全匹配字符串 ":Feed:" 并返回一天拉所有这些记录 . 我有的json似乎也匹配普通单词 " feed " . 我不确定我哪里出错了 . 我是否需要将 "constant_score" 添加到此查询JSON中?我目前的JSON如下所示:

{
    "query": {
        "bool": {
            "must": {
                "query_string": {
                    "fields": ["message"],
                    "query": "\\:Feed\\:"
                }
            },
            "must": {
                "range": {
                    "timestamp": {
                        "gte": "now-1d",
                        "lte": "now"
                    }
                }
            }
        }
    }
}

1 回答

  • 9

    如上所述:Finding Exact Values,因为在索引时已对字段进行了分析 - 您无法精确匹配其标记(":") . 每当标记应该可搜索时,映射应该是"not_analyzed"并且数据需要重新编制索引 .

    如果您希望能够在消息字段中轻松匹配“:feed:”,则可能需要对未标记“:”的分析器进行成本化,以便您可以使用简单的“匹配”查询来查询字段而不是野生人物 .

相关问题