- 示例檔案
{
"_id": "1",
"DOC": [
{
"key": "A B C"
},
{
"key": "B C D"
},
{
"key": "C D E"
}
]
}
我想強調檔案的每個key有A and C。
但是我嘗試過的所有查詢都會搜索整個檔案。
如果我搜索A and C,他們會給我
"highlight": {
"DOC.key": [
"<keyword>A</keyword> B <keyword>C</keyword>",
"B <keyword>C</keyword> D",
"<keyword>C</keyword> D E"
]
}
"<keyword>A</keyword> B <keyword>C</keyword>" 是正確的。
但我不想"B <keyword>C</keyword> D"和"<keyword>C</keyword> D E"。
我想強調key其具有A與C
"highlight": {
"DOC.key": [
"<keyword>A</keyword> B <keyword>C</keyword>"
]
}
我怎樣才能搜索到它?
uj5u.com熱心網友回復:
普通陣列在彈性搜索中被展平。所以在索引檔案之后不知道所有的“鍵”都是分開的。
如果要將每個“鍵”視為單獨的物體,則需要將其宣告為嵌套
映射
{
"mappings": {
"properties": {
"DOC":{
"type": "nested"
}
}
}
}
詢問
{
"query": {
"nested": {
"path": "DOC",
"query": {
"match": {
"DOC.key": {
"query": "A C",
"operator": "and"
}
}
},
"inner_hits": {
"highlight": {
"fields": {
"DOC.key": {}
}
}
}
}
}
}
結果
{
"_index" : "index61",
"_type" : "_doc",
"_id" : "QUI7Dn0BLZ9gNW_AS1dp",
"_score" : 1.1037275,
"_source" : {
"DOC" : [
{
"key" : "A B C"
},
{
"key" : "B C D"
},
{
"key" : "C D E"
}
]
},
"inner_hits" : {
"DOC" : {
"hits" : {
"total" : {
"value" : 1,
"relation" : "eq"
},
"max_score" : 1.1037275,
"hits" : [
{
"_index" : "index61",
"_type" : "_doc",
"_id" : "QUI7Dn0BLZ9gNW_AS1dp",
"_nested" : {
"field" : "DOC",
"offset" : 0
},
"_score" : 1.1037275,
"_source" : {
"key" : "A B C"
},
"highlight" : {
"DOC.key" : [
"<em>A</em> B <em>C</em>"
]
}
}
]
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/357704.html
標籤:弹性搜索
