@SergeyTSA

Как правильно сформировать поисковый запрос в Elasticsearch?

Здравствуйте!
Помогите пожалуйста правильно сформировать поисковый запрос в эластике.
Имеется индекс по товарам
localhost:9200/test_index/product
Вот mapping:
{
  "test_index" : {
    "mappings" : {
      "product" : {
        "properties" : {
          "category" : {
            "type" : "integer"
          },
          "id" : {
            "type" : "integer"
          },
          "name" : {
            "type" : "string",
            "index" : "not_analyzed"
          },
          "property_stock" : {
            "type" : "integer"
          },
          "skus" : {
            "type" : "string",
            "index" : "not_analyzed"
          },
          "tags" : {
            "properties" : {
              "group_id" : {
                "type" : "integer"
              },
              "tag_id" : {
                "type" : "integer"
              }
            }
          },
          "visible" : {
            "type" : "boolean"
          }
        }
      }
    }
  }
}

Как сделать запрос на поиск, если например нужно чтоб товар входил хотя бы в одну из категорий (например [111, 222, 333, 444]) и у него были теги { "group_id": 10, "tag_id": 20} и { "group_id": 50, "tag_id": 100} одновременно.
Заранее спасибо!
  • Вопрос задан
  • 1058 просмотров
Решения вопроса 1
@SergeyTSA Автор вопроса
Сам же на свой вопрос и отвечу :-)
У меня получилось сделать таким способом:
{
	"query": {
		"filtered": {
			"filter": {
				"bool": {
					"must": [
						{
							"bool": {
								"must": [
									{"term": {"tags.group_id": 818}},
									{"term": {"tags.tag_id": 223}}
								]
							}
						},
						{
							"bool": {
								"should": [
									{"term": {"categories": 9110}},
									{"term": {"categories": 9111}},
									{"term": {"categories": 9114}},
									{"term": {"categories": 9109}}
								]
							}
						}
					]
				}
			}
		}
	}
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы