我需要創建一些更復雜的查詢。除了匹配欄位中的一些隨機文本外,html我還需要匹配串列中的至少一個keywords。它在串列僅包含一個單詞字串時起作用,但它不會在串列中注冊多單詞字串。我不能將它們分成單獨的單詞,因為這可能會影響結果。
這是我到目前為止所嘗試的。
{
"from":page_num * size - size,
"size": size,
"query":{
"bool":{
"must":[
{
"match":{
"html":{
"query":"some query",
"operator":"and"
}
}
},
{
"terms":{
"keywords":[
"word",
"two words",
"another words"
]
}
}
]
}
}
}
uj5u.com熱心網友回復:
如果您沒有明確定義任何映射,那么您需要將 .keyword 添加到關鍵字欄位。這使用關鍵字分析器而不是標準分析器(注意關鍵字欄位后的“.keyword”)。
{
"from":page_num * size - size,
"size": size,
"query":{
"bool":{
"must":[
{
"match":{
"html":{
"query":"some query",
"operator":"and"
}
}
},
{
"terms":{
"keywords.keyword":[
"word",
"two words",
"another words"
]
}
}
]
}
}
}
但是,如果您想將關鍵字欄位存盤為文本和關鍵字型別,則可以如下所示更新索引映射以使用多欄位
PUT /_mapping
{
"properties": {
"keywords": {
"type": "keyword",
"fields": {
"raw": {
"type": "text"
}
}
}
}
}
然后再次重新索引資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/456491.html
標籤:弹性搜索
