使用ElasticSearch进行域搜索时出现问题

5q4ezhmt  于 2023-01-16  发布在  ElasticSearch
关注(0)|答案(1)|浏览(124)

我已登记以下文件

"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“的文档,这不是我要查找的文档,因为我需要精确的搜索

tpxzln5u

tpxzln5u1#

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

相关问题