Elasticsearch: поиск по динамическим объектам - PullRequest
0 голосов
/ 09 октября 2019

У меня небольшая проблема с ElasticSearch, и я не могу найти никакой документации по этой проблеме. Я думаю, что знаю, в чем проблема, я просто хотел попросить убедиться, что я прав в диагностике проблемы, а также спросить, есть ли обходной путь, который кто-нибудь знает.

Я работаю с ElasticSearchJava SDK (v. 7.xx). У меня есть POJO, представляющий мой объект ElasticSearch, и отображение ElasticSearch, чтобы представить мой объект:

public class myClass {
    private Map<String, String> dynamicData;
    private String staticData;
}
  "settings": {
    ...
  },
  "mappings": {
    "properties": {
      "dynamicData": {
        "properties": {},
        "dynamic": "true"
      },
      "staticData": {
        "type": "keyword"
      }
    }
  }
}

Запись данных в эту схему прекрасно работает, и я могу использовать браузер ES для проверкичто эта настройка работает и правильно пишет в ES. Проблема в том, что я не могу запрашивать подполя dynamicData. Например, если я напишу какой-либо запрос Term или Match для этих данных (это карта String String, то есть все текстовые данные), я получу ноль результатов. Я могу выполнять запросы к staticData без проблем.

Мой вопрос: ES динамически индексирует динамические данные так, как я хочу (чтобы они были доступны для поиска)? И если нет, есть ли обходной путь для этого? Правильным решением будет запрос на равенство на основе всего объекта dynamicData, что не вызовет у меня проблемы, если это возможно.

Спасибо!

РЕДАКТИРОВАТЬ: Образец данных (формат JSON)согласно запросу в комментариях

{
    "staticData": "Title",
    "dynamicData": {
        "field1": "somedata"
    }
}

И запрос:

{
    "query": {
        "bool": {
            "must": [{
                "term": {
                    "staticData": {
                        "value": "Title"
                    }
                }
            },{
                "term": {
                    "dynamicData.field1": {
                        "value": "somedata"
                    }
            }]
...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...