這可能太過SO的問題的基礎,但我想我會問無論如何。如何模仿URI查詢
我用ElasticSearch弄溼了自己的腳,並試圖返回一個與我感興趣的領域完全匹配的文檔。
我有被映射爲類型「字符串」和索引爲「not_analyzed」字段「StoryText」。
當我搜索使用基本URI查詢:
123.456.0.789:9200/stories/storyphrases/_search?q=StoryText:"The boy sat quietly"
我返回準確匹配的文檔如我所料單一擊中。
然而,當我使用搜索功能:
GET 123.456.0.789:9200/stories/storyphrases/_search
{
"query" : {
"filtered" : {
"filter" : {
"term" : {
"StoryText" : "The boy sat quietly"
}
}
}
}
}
我得到多個文檔,許多命中(即「小男孩大聲地坐下」,「男孩靜靜地站在」等返回等)
有人可以幫助我瞭解我需要重組我的搜索請求以模仿我使用基本查詢參數的結果嗎?
目前我使用的窩在C#中生成它看起來像這樣
var searchresults = client.Search<stories>(p => p
.Query(q => q
.Filtered(r => r
.Filter(s => s.Term("StoryText", inputtext))
)
)
);
非常感謝任何及所有讀取和或想法我的搜索請求!
UPDATE:映射下面列出
GET /stories/storyphrases/_mappings
{
"stories": {
"mappings": {
"storyphrases": {
"dynamic": "strict",
"properties": {
"@timestamp": {
"type": "date",
"format": "date_optional_time"
},
"@version": {
"type": "string"
},
"SubjectCode": {
"type": "string"
},
"VerbCode": {
"type": "string"
},
"LocationCode": {
"type": "string"
},
"BookCode": {
"type": "string"
},
"Route": {
"type": "string"
},
"StoryText": {
"type": "string",
"index": "not_analyzed"
},
"SourceType": {
"type": "string"
},
"host": {
"type": "string"
},
"message": {
"type": "string"
},
"path": {
"type": "string"
}
}
}
}
}
米克
你的'StoryText'字段絕對沒有被分析?你能發佈你的映射嗎? – ceej