Что не так в этом эластичном поисковом запросе?

Я не могу понять, почему у меня нет результатов? Использование ES 2.

"query": {
      "filtered": {
         "query": {
            "match_all": {}
         },
         "filter": {
            "term": {
               "technical.techcolor": "red"
            }
         }
      }
   }

И вот информация из db, которую я ищу.

{"technical":
        [{
         "techname22": "test",
         "techcolor":"red",
         "techlocation": "usa"
        }],
    "audio":
        {
        "someAudioMetadata": "test"
        }
    }

1 ответ

Поскольку вы не указали свое сопоставление, я рассматриваю следующее сопоставление.

Отображение:

{
  "mappings": {
    "company": {
      "properties": {
        "technical": {
          "type": "nested"
        }
      }
    }
  }
}

Поисковый запрос:

{
  "query": {
    "filtered": {
      "query": {
        "match_all": {

        }
      },
      "filter": {
        "nested": {
          "path": "technical",
          "filter": {
            "term": {
              "technical.techcolor": "red"
            }
          }
        }
      }
    }
  }
}

Результат поиска:

"hits": {
        "total": 1,
        "max_score": 1.0,
        "hits": [
            {
                "_index": "demos",
                "_type": "company",
                "_id": "1",
                "_score": 1.0,
                "_source": {
                    "technical": [
                        {
                            "techname22": "test",
                            "techcolor": "red",
                            "techlocation": "usa"
                        }
                    ],
                    "audio": {
                        "someAudioMetadata": "test"
                    }
                }
            }
        ]
    }

Чтобы узнать больше о вложенном типе данных, вы можете обратиться к этой официальной документации, а для запроса и контекста фильтра обратитесь к этому

Другие вопросы по тегам