elasticsearch 如何使用GET过滤ElasticSearch中的字段,elasticsearch,wikipedia,elasticsearch,Wikipedia" /> elasticsearch 如何使用GET过滤ElasticSearch中的字段,elasticsearch,wikipedia,elasticsearch,Wikipedia" />

elasticsearch 如何使用GET过滤ElasticSearch中的字段

elasticsearch 如何使用GET过滤ElasticSearch中的字段,elasticsearch,wikipedia,elasticsearch,Wikipedia,我最近在WikipediaRiver上安装了ElasticSearch,因为我正在开发一个带有文章标题的自动完成框。我一直在试图找出查询数据集的最佳方法。以下工作: /wikipedia/_search?q=mysearch&fields=title,redirect&size=20 但我想为搜索添加更多限制: disambiguation=false, redirect=false, stub=false, special=false 我是ElasticSearch的新手,

我最近在WikipediaRiver上安装了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"
        }
      }
    }
  }
}

要添加更多约束,可以继续使用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
                        }
                    }
                ]
            }
        }
    }
}
' 

谢谢,这正是我想要的。你知道如何增加限额吗?无论我在哪里添加限制,它似乎都会显示10个结果。我用的是你的后一个建议。谢谢我用你可以用来限制结果数量的参数编辑了这篇文章。