【问题标题】:Problem searching domain with elastic search使用弹性搜索搜索域的问题
【发布时间】:2023-01-14 08:54:51
【问题描述】:

我已经注册了以下文件

"ownDomainValue":"catalogonuevo1.com"

当我执行以下查询时,找到文档,值为“catalogonuevo1”

[
    {
        "query": {
            "bool": {
                "filter": [
                    {
                        "term": {
                            "valor_dominio_propio": "catalogonuevo1"
                        }
                    }
                ]
            }
        },
        "from": 0,
        "size": 1
    }
]

但是,当搜索值为“catalogonuevo1.com”时

[
    {
        "query": {
            "bool": {
                "filter": [
                    {
                        "term": {
                            "valor_dominio_propio": "catalogonuevo1.com"
                        }
                    }
                ]
            }
        },
        "from": 0,
        "size": 1
    }
]

它不返回任何值,使用 MatchQueries 会发生相反的情况,它总是会找到一个错误的文档,例如一个值为“catalogonuevo2.com”的文档,这不是我要找的,因为我需要准确的搜索

【问题讨论】:

    标签: elasticsearch elasticsearch-dsl term-query


    【解决方案1】:

    听起来问题在于 Elasticsearch 中的“term”查询与包含在查询中的确切值“catalogonuevo1.com”不匹配。这可能是因为“term”查询正在标记“.”处的输入字符串。字符,因此它匹配标记“catalogonuevo1”而不是整个字符串“catalogonuevo1.com”。 您可以通过使用“match_phrase”查询而不是“term”查询来解决此问题,因为“match_phrase”查询匹配的是确切的短语而不是单个标记。此外,您可以使用关键字字段来存储域值,这样值就不会被标记化,匹配短语将按预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-16
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多