Я очень новичок в поиске elastics, и документация действительно просто смущает меня, поэтому, пожалуйста, несите меня немного здесь.Elasticsearch: Соответствующие документы с массивом в нем
У меня есть индекс называется zproducts
и под ним тип, называемый item
, который сопоставляется несколько выглядит следующим образом:
{
"item_name" : "Product A",
"category_ids" : [ "id1", "id2" ]
},
{
"item_name" : "Product B",
"category_ids" : [ "id1" ]
},
{
"item_name" : "Product C",
"category_ids" : [ "id2" ]
}
Я хочу, чтобы иметь возможность запрашивать товары, которые соответствуют по меньшей мере, одно из из категории. то есть. запрос на id2
вернет продукты A и C.
Казалось бы, у меня есть та же самая проблема, что и у this.
Но решение, предлагаемое там, просто не работает для меня.
Это мой текущий запрос:
/zproducts/items/_search
{
"query": {
"bool": {
"must": [
{
"term": {
"category_ids": "id2"
}
}
]
}
}
}
Последующий тест запрос:
{
"query": {
"filtered": {
"filter": {
"term": {
"category_ids": "id2"
}
}
}
}
}
Оба запроса возвращает все элементы в магазине, а не только те, которые я пытаюсь для запроса.
Был также оригинальный запрос, который по какой-то причине работал, но полностью прекратил работу.
{
"query": {
"bool": {
"must": [
{
"match": {
"category_ids": {
"query": "id2",
"operator": "or"
}
}
}
]
}
}
}
Так что же я делаю неправильно здесь? Может ли кто-нибудь пролить свет?
Все ваши запросы должны давать ожидаемые результаты, если тип 'category_ids' является' string'. Я просто попробовал их на своей локальной установке. Можете ли вы поделиться результатами «GET zproducts/item/_mapping»? – bittusarkar
@ baskar- позвольте мне поместить его в [pastebin] (http://pastebin.com/K9bv6vNp), поскольку он довольно длинный. Я уверен, что 'category_ids' имеет тип' string'. – rgin