2016-03-07 51 views
1

我跟着文檔https://www.elastic.co/guide/en/elasticsearch/guide/current/multi-fields.html添加排序列爲名稱字段。不幸的是,它不工作elasticsearch排序意外的空返回

這些步驟如下:

  1. 附加索引映射
PUT /staff 
{ 
    "mappings": { 
     "staff": { 
      "properties": { 
       "id": { 
        "type": "string", 
        "index": "not_analyzed" 
       }, 
       "name": { 
        "type":  "string", 
        "fields": { 
         "raw": { 
          "type": "string", 
          "index": "not_analyzed" 
         } 
        } 
       } 
      } 
     } 
    } 
} 
  • 添加文件
  • POST /staff/list { 
         "id": 5, 
         "name": "abc" 
        } 
    
  • 搜索爲name.raw
  • POST /staff_change/_search 
    { 
        "sort": "name.raw" 
    } 
    

    然而,在響應排序字段返回

    "_source": { 
         "id": 5, 
         "name": "abc" 
        }, 
        "sort": [ 
         null 
        ] 
        } 
    

    我不知道它爲什麼不工作,我不能搜索相關的問題文檔相關此。是否有人遇到這個問題

    提前感謝

    回答

    2

    你的映射是不正確的。您在索引staff內創建映射staff,然後在索引staff內映射list下索引文檔,該索引可以使用動態映射工作,而不是您添加的索引。最後,您正在搜索索引staff中的所有文檔。試試這個:

    PUT /staff 
    { 
        "mappings": { 
         "list": { 
          "properties": { 
           "id": { 
            "type": "string", 
            "index": "not_analyzed" 
           }, 
           "name": { 
            "type":  "string", 
            "fields": { 
             "raw": { 
              "type": "string", 
              "index": "not_analyzed" 
             } 
            } 
           } 
          } 
         } 
        } 
    } 
    

    然後指數:

    POST /staff/list { 
        "id": 5, 
        "name": "abc aa" 
    } 
    

    和查詢:

    POST /staff/list/_search 
    { 
        "sort": "name.raw" 
    } 
    

    結果:

    "hits": [ 
        { 
         "sort": [ 
          "abc aa" 
         ] 
        } 
    ... 
    
    +0

    啊哈,好去接謝謝:) –