我最近在维基百科河上安装了ElasticSearch,因为我正在开发一个带文章标题的自动完成框。我一直在试图找出查询数据集的最佳方法。以下作品:
/wikipedia/_search?q=mysearch&fields=title,redirect&size=20
但我想在搜索中添加更多限制:
disambiguation=false, redirect=false, stub=false, special=false
我是ElasticSearch的新手,文档还没有让我走得太远。根据我的阅读,我需要一个过滤的查询;有没有办法从GET请求中做到这一点?这将使我的特定用例更容易。如果没有,POST请求将如何显示?提前谢谢。
作为参考,映射是:
{
"wikipedia": {
"page": {
"properties": {
"category": {
"type": "string"
},
"disambiguation": {
"type": "boolean"
},
"link": {
"type": "string"
},
"redirect": {
"type": "boolean"
},
"special": {
"type": "boolean"
},
"stub": {
"type": "boolean"
},
"text": {
"type": "string"
},
"title": {
"type": "string"
}
}
}
}
}
答案 0 :(得分:1)
要添加更多约束,您可以继续使用lucene语法并执行以下操作:
/wikipedia/_search?q=mysearch AND disambiguation:false AND redirect:false AND stub:false AND special:false&fields=title,redirect&size=20
为了提高性能,您可以使用json API使用过滤器,查询将如下所示:
curl -XGET 'http://localhost:9200/wikipedia/_search?pretty=true' -d '
{
"from" : 0,
"size" : 20,
"query":{
"filtered" : {
"query" : {
"text" : { "title" : "test" }
},
"filter" : {
"and": [
{
"term" : {
"stub" : false
}
},
{
"term" : {
"disambiguation" : false
}
},
{
"term" : {
"redirect" : false
}
},
{
"term" : {
"special" : false
}
}
]
}
}
}
}
'