如何在ElasticSearch中执行索引查询?

时间:2012-11-28 21:09:35

标签: elasticsearch

您使用什么URL来执行索引查询?

我在这里看到以下内容,但是这样做的URL是什么? http://www.elasticsearch.org/guide/reference/query-dsl/indices-query.html

我知道如何在弹性搜索中查询的唯一方法是使用URI:

http://localhost:9200/myindex

我遇到的问题是我有多个索引和不同的文档 myindex1 myindex2 myindex3

我希望能够对myindex1和myindex2(或者只是myindex2和myindex3)执行任何查询

这可能吗?您还可以将索引查询与QueryDSL结合使用,例如match_all查询或术语查询:

http://www.elasticsearch.org/guide/reference/query-dsl/terms-query.html

请展示一个示例网址的示例,如果可能的话,会在请求正文中显示内容,以便我可以了解一下。

4 个答案:

答案 0 :(得分:16)

你可以尝试:

 curl http://localhost:9200/myindex1,myindex2/_search?q=*

 curl -XPOST http://localhost:9200/myindex1,myindex2/_search -d '{
    // your query here
 }'

这是你在找什么?

答案 1 :(得分:7)

如果您使用的是感知插件,可以像这样写

 POST myindex1/_search
{
"query": {"match_all": {}}
 }

答案 2 :(得分:6)

你可以通过几种不同的方式做到这一点。

1)对myindex1myindex2的索引查询以及title字段上的字词查询。

curl -XPOST http://localhost:9200/_search -d '{
  "query": {
    "indices": {
      "indices": [
        "myindex1",
        "myindex2"
      ],
      "query": {
        "terms": {
          "title": [
            "foo",
            "bar"
          ]
        }
      }
    }
  }
}'

2)通过指定要在URI中搜索的索引(具有相同的确切术语查询)。

curl -XPOST http://localhost:9200/myindex1,myindex2/_search -d '{
  "query": {
    "terms": {
      "title": [
        "cookies",
        "cake"
      ]
    }
  }
}'

是的,您可以在两个示例中的任何一个中替换match_all查询(或任何其他查询here)的术语查询。以下是在第二个示例中执行match_all查询的方法:

curl -XPOST http://localhost:9200/myindex1,myindex2/_search -d '{
  "query": {
    "match_all": {}
  }
}'

答案 3 :(得分:1)

我建议安装弹头插件。该接口上的第3个选项卡具有查询构建器。您可以选择索引,构建查询,并查看它生成的dsl查询。这是快速了解dsl查询语法的一种方法。

http://mobz.github.io/elasticsearch-head/