elasticsearch _all


在輕量搜索中,我們介紹了 _all 字段:一個把其它字段值 當作一個大字符串來索引的特殊字段。 query_string 查詢子句(搜索 ?q=john )在沒有指定字段時默認使用 _all 字段。
_all 字段在新應用的探索階段,當你還不清楚文檔的最終結構時是比較有用的。你可以使用這個字段來做任何查詢,並且有很大可能找到需要的文檔:

GET /_search
{
    "match": {
        "_all": "john smith marketing"
    }
}

隨着應用的發展,搜索需求變得更加明確,你會發現自己越來越少使用 _all 字段。 _all 字段是搜索的應急之策。通過查詢指定字段,你的查詢更加靈活、強大,你也可以對相關性最高的搜索結果進行更細粒度的控制。
如果你不再需要 _all 字段,你可以通過下面的映射來禁用:

PUT /my_index/my_type/_mapping
{
    "my_type": {
        "_all": { "enabled": false }
    }
}

通過 include_in_all 設置來逐個控制字段是否要包含在 _all 字段中,默認值是 true`。在一個對象(或根對象)上設置 `include_in_all 可以修改這個對象中的所有字段的默認行為。
你可能想要保留 _all 字段作為一個只包含某些特定字段的全文字段,例如只包含 title`,`overview`,`summary 和 tags`。 相對於完全禁用 `_all 字段,你可以為所有字段默認禁用 include_in_all 選項,僅在你選擇的字段上啟用:

PUT /my_index/my_type/_mapping
{
    "my_type": {
        "include_in_all": false,
        "properties": {
            "title": {
                "type":           "string",
                "include_in_all": true
            },
            ...
        }
    }
}

記住,_all 字段僅僅是一個 經過分詞的 string 字段。它使用默認分詞器來分析它的值,不管這個值原本所在字段指定的分詞器。就像所有 string 字段,你可以配置 _all 字段使用的分詞器:

PUT /my_index/my_type/_mapping
{
    "my_type": {
        "_all": { "analyzer": "whitespace" }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM