在彈性搜索,該過濾器ElasticSearch布爾過濾用一個短語(而不是單個字/標籤)
{
"bool": {
"must": {
"term": {
"article.title": "google"
}
}
}
}
正確返回與標題爲「谷歌」的文章。
然而,
{
"bool": {
"must": {
"term": {
"article.title": "google earth"
}
}
}
}
不返回任何結果,儘管有在標題中的原話「谷歌地球」的文章。我希望這樣做。
完整的查詢:
{
"size": 200,
"filter": {
"bool": {
"must": {
"term": {
"article.title": "google maps"
}
}
}
},
{
"range": {
"created_date": {
"from": "2013-01-11T02:14:03.352Z"
}
}
}]
}
}
正如你所看到的,我沒有「查詢」 - 只是一個過濾器,大小和範圍。所以我認爲ElasticSearch正在使用默認分析器...?
我誤解了什麼?
編輯:對於那些尋求的解決方案,這是我的過濾器:
{
"query": {
"bool": {
"must": {
"must_match": {
"article.title": "google earth"
}
}
}
}
}
節點:(1)我們用 「查詢」 和包裹布爾過濾器(2)「術語「改爲」must_match「,這導致整個短語匹配(與」匹配「相反,該匹配將使用谷歌地球上的標準分析器來搜索article.title)。
完整的查詢看起來是這樣的:
{
"size": 200,
"filter": {
"query": {
"bool": {
"must": {
"must_match": {
"article.title": "google earth"
}
}
}
}
}
}
FWIW,我有「過濾器」字段中這一條件(而不是使用標準的查詢)的原因是,有時我想用一個「 must_not「而不是」must_not「,有時我還將其他元素添加到查詢中。
您的分析器對於article.title看起來像什麼?如果您使用「關鍵字」以外的任何字詞分析該字段,則該字段將被標記爲[google]和[地球],這將使其不匹配。 – Zach 2013-02-09 23:54:07
嗯,是從查詢結轉到過濾器的文章?我已更新我的問題來說明我的意思。 – 2013-02-10 02:14:48