我對彈性搜索很陌生。我有一個包含多個欄位的資料集,例如名稱、產品資訊、描述等,因此在搜索檔案時,搜索詞可以來自這些欄位中的任何一個(讓我們將它們稱為“搜索核心欄位”)。如果我開始在彈性搜索中存盤資料,我是否應該派生一個欄位,它是所有“搜索核心欄位”的連接項?然后單獨索引這個欄位?
我遇到了 _all 映射概念并且有點困惑。它做同樣的事情嗎?
uj5u.com熱心網友回復:
不,您不需要創建任何包含連接術語的新欄位。您可以將_all與匹配查詢一起使用來搜索任何欄位中的文本。關于_all,是的,它從任何欄位中搜索文本
uj5u.com熱心網友回復:
該_all欄位已在 ES 7 中洗掉,因此它僅適用于 ES 6 和以前的版本。造成這種情況的主要原因是它使用了太多的存盤空間。
但是,您可以使用該功能定義自己的all欄位。您基本上在映射中指定應將哪些欄位復制到您的自定義所有欄位,然后您可以在該欄位上進行搜索。copy_to
您可以像這樣定義映射:
PUT my-index
{
"mappings": {
"properties": {
"name": {
"type": "text",
"copy_to": "custom_all"
},
"product_info": {
"type": "text",
"copy_to": "custom_all"
},
"description": {
"type": "text",
"copy_to": "custom_all"
},
"custom_all": {
"type": "text"
}
}
}
}
PUT my-index/_doc/1
{
"name": "XYZ",
"product_info": "ABC product",
"description": "this product does blablabla"
}
然后你可以像這樣搜索你的“全部”欄位:
POST my-index/_search
{
"query": {
"match": {
"custom_all": {
"query": "ABC",
"operator": "and"
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/418478.html
標籤:
