Как выполнить запрос индексов в 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

Пожалуйста, покажите пример примерного URL-адреса и, если возможно, в теле запроса, чтобы я мог получить представление.

Ответ 1

Если вы используете сенсорный плагин, вы можете писать так

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

Ответ 2

Вы можете попробовать:

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

Или

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

Это то, что вы ищете?

Ответ 3

Вы можете сделать это несколько разных способов.

1) С запросом индексов на myindex1 и myindex2 с запросом терминов в поле 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 (или любого другого запроса здесь, действительно) в любом из двух примеров. Вот как вы бы выполнили запрос match_all во втором примере:

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

Ответ 4

Я рекомендую установить плагин с эластичной головкой. Третья вкладка на этом интерфейсе имеет построитель запросов. Вы можете выбрать индекс, построить запрос и посмотреть на запрос dsl, который он производит. Это быстрый способ ускорить выполнение синтаксиса запроса dsl.

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