Как я могу запроситьasticsearch только для одного типа записи? - PullRequest
17 голосов
/ 29 марта 2012

Я отправляю запрос наasticsearch и получаю несколько типов записей. Как ограничить результаты одним типом?

Ответы [ 4 ]

22 голосов
/ 29 марта 2012

Следующий запрос ограничит результаты записями с типом "ваш_тип":

curl - XGET 'http://localhost:9200/_all/your_type/_search?q=your_query'

Подробнее см. http://www.elasticsearch.org/guide/reference/api/search/indices-types.html.

14 голосов
/ 24 декабря 2014

Вы также можете использовать запрос dsl, чтобы отфильтровать результаты для определенного типа, например:

$ curl -XGET 'http://localhost:9200/_search' -d '{
    "query": {
        "filtered" : {
            "filter" : {
                "type" : { "value" : "my_type" }
            }
        }
    }
}
'

Обновление для версии 6.1: Фильтр типов теперь заменен запросом типов: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-type-query.html Вы можете использовать это как в контексте запросов, так и в фильтрах.

3 голосов
/ 31 июля 2014
{
"query" : {
      "filtered" : { 
         "filter" : {
            "bool" : {
            "must" :[{"term":{"_type":"UserAudit"}}, {"term" : {"eventType": "REGISTRATION"}}]
           }
         }
      }
   },
   "aggs":{
      "monthly":{
         "date_histogram":{
            "field":"timestamp",
            "interval":"1y"
         },
         "aggs":{
            "existing_visitor":{
               "terms":{
                  "field":"existingGuest"
               }
            }
         }
      }
   }
}

"_ тип": условие "UserAudit" будет искать записи, относящиеся только к типу

0 голосов
/ 06 октября 2017

В версии 2.3 вы можете запросить поле _type , например:

{
  "query": {
    "terms": {
      "_type": [ "type_1", "type_2" ] 
    }
  }
}

Или, если вы хотите исключить тип:

{
  "query": {
    "bool" : {
      "must_not" : {
        "term" : {
          "_type" : "Hassan"
        }
      }
    }
  }
}
...