【问题标题】:elasticsearch TERM query not returning the document that contains the exact termelasticsearch TERM 查询不返回包含确切术语的文档
【发布时间】:2017-01-26 09:25:54
【问题描述】:

我的文档中有一个值为“OK”的状态。

以下匹配查询返回此文档:

POST /bank/_search
{
    "query": {  
        "bool" : {
        "must" : {
            "match" : { "state" : "OK" }
        } 
}}}

以下术语查询不会返回状态为“OK”的文档:

POST /bank/_search
{
    "query": {  
        "bool" : {
        "must" : {
            "term" : { "state" : "OK" }
        } 
}}}

根据定义“术语查询查找包含倒排索引中指定的确切术语的文档。”我仍然很困惑为什么术语查询没有返回所需的文档。

我通过执行以下命令通过感知导入数据:

curl -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary "@accounts.json"
curl 'localhost:9200/_cat/indices?v'

如果有人也可以分享一些关于倒置/非倒置、分析/非分析和术语/匹配的信息,那就太好了。我读过这些,但我仍然感到困惑。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    Match 查询总是在进行匹配之前对搜索文本进行分析,但 Term 查询会寻找完全匹配的内容。手段

    当您插入文本“OK”时,默认情况下 ES 会进行分析(标准分析器)并将文本存储为“ok”(小写)在倒排索引中。

    所以当您使用匹配查询进行搜索时

    POST /bank/_search
    {
        "query": {  
            "bool" : {
            "must" : {
                "match" : { "state" : "OK" }
            } 
    }}}
    

    “OK”文本转换为“ok”(根据状态分析器)并执行匹配。

    对于术语查询,您必须手动将文本更改为小写,因为它不会对搜索时间进行分析。

    POST /bank/_search
    {
        "query": {  
            "bool" : {
            "must" : {
                "term" : { "state" : "ok" } //lowercased
            } 
    }}}
    

    如果您总是寻找“确定”,那么您可以在状态属性上添加“未分析”。 这意味着在存储时 state 属性不会按原样分析和存储,那么您的术语和匹配查询将看起来准确。

    请看, How to not-analyze in ElasticSearch?

    【讨论】:

    • 这很奇怪。原始 json 的“状态”为“OK”,仍然只有小写的“ok”返回文档。这是什么原因?如果文本设置为不分析,那么我假设“OK”会返回文档而“ok”不会,对吗?
    • 还有一件事,当我输入“Ok”或“oK”时,匹配查询如何返回文档?它是否将每个输入更改为小字符,即“ok”,然后检查?或者倒排索引有“OK”、“ok”、“Ok”、“oK”即所有组合?
    • 是的,你是对的。如果不是标准分析器,匹配查询总是检查添加到属性(此处状态属性)的分析器,然后对搜索文本执行分析器。标准分析器的行为是小写文本。因此,您添加的任何文本(Ok、ok、oK 等)都会被小写和搜索
    • 看看elastic.co/guide/en/elasticsearch/reference/current/… 这里的StandardAnalyzer包含'小写令牌过滤器',它正在做这个魔术
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 2015-11-04
    • 2020-03-19
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    相关资源
    最近更新 更多