nulldef
@nulldef
Senior Software Developer

Какой запрос поиска в elasticsearch по разным уровням?

Для индекса вида
{
  "posts": {
    "mappings": {
      "activity": {
        "properties": {
          "categories": {
            "properties": {
              "description": {
                "type": "string",
                "analyzer": "russian"
              },
              "name": {
                "type": "string",
                "analyzer": "russian"
              }
            }
          },
          "tags": {
            "type": "nested",
            "properties": {
              "name": {
                "type": "string",
                "analyzer": "russian"
              }
            }
          },
          "description": {
            "type": "string",
            "analyzer": "russian"
          },
          "title": {
            "type": "string",
            "analyzer": "russian"
          }
        }
      }
    }
  }
}

нужно сделать full-text search запрос по всем полям, которые есть. То есть по `title`, `description`, `tags.name`, `categories.name` и `categories.description`. Можно ли вообще такое выполнить?
Видел в доках только запросы отдельно по уровням.
Буду очень благодарен за помощь.
  • Вопрос задан
  • 397 просмотров
Пригласить эксперта
Ответы на вопрос 2
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Да, можно - https://www.elastic.co/guide/en/elasticsearch/refe...
Просто поставьте "_all". Но если индекс гигантский, то могут быть проблемы с производительностью.
Ответ написан
Комментировать
MintTea
@MintTea
Если нужно именно по всем имеющимся полям, выше уже ответили про _all.

Если поля все-таки перечислимы, лучше multi match query.

curl -XGET 'http://elasticsearch:9200/_search' -d '{
    "query": {
        "multi_match": {
            "query": "My search query",
            "fields": [
                "title",
                "description",
                "tags.name",
                "categories.name",
                "categories.description"
            ]
        }
    }
}'
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы