代码之家  ›  专栏  ›  技术社区  ›  Karthikeyan

弹性搜索匹配策略查询工作不正常

  •  0
  • Karthikeyan  · 技术社区  · 7 年前

    我正在尝试使用以下文档进行搜索 match_phrase 在Kibana中查询,但未得到响应。

    请在下面找到弹性搜索中可用的文档

        {  
           "took":7,
           "timed_out":false,
           "_shards":{  
              "total":5,
              "successful":5,
              "skipped":0,
              "failed":0
           },
           "hits":{  
              "total":2910,
              "max_score":1.0,
              "hits":[  
                 {  
                    "_index":"documents",
                    "_type":"doc",
                    "_id":"DmLD22MBFTg0XFZppYt8",
                    "_score":1.0,
                    "_source":{  
                       "doct_country":"DE",
                       "filename":"series_Accessories_v1_de-DE.pdf",
    
    
                 }
    
              ]
           }
        }
    

    请查找用于搜索上述文档的查询。

    GET documents/_search
    {
        "query": {
            "match_phrase" : {
                "message" : "Accessories_v1_de-DE.pdf"
            }
        }
    }
    

    对于上述查询,我将得到以下响应:

    {
      "took": 0,
      "timed_out": false,
      "_shards": {
        "total": 5,
        "successful": 5,
        "skipped": 0,
        "failed": 0
      },
      "hits": {
        "total": 0,
        "max_score": null,
        "hits": []
      }
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Ryan Walker    7 年前

    有两个问题。假设在您的查询中,您打算使用 filename 场而不是 message 您的示例文档中没有:

    GET documents/_search
    {
        "query": {
            "match_phrase" : {
                "filename" : "Accessories_v1_de-DE.pdf"
            }
        }
    }
    

    其次,你需要ElasticSearch知道 文件名 字段应索引为 _ 被当作分裂。默认情况下不会发生这种情况。一种方法是按如下方式定义映射:

    PUT /documents
    {
        "mappings" : {
            "document" : {
                "properties" : {
                    "filename" : { "type" : "text", "analyzer": "simple" }
                }
            }
        }
    }
    

    简单的分析器将拆分为任何非字母,因此 γ 数字将被视为分割。根据您的应用程序,您可能需要对标记化进行更细粒度的控制。见 documentation .