У меня есть документы, которые выглядят следующим образом:ElasticSearch: в том числе вложенные поля в _all?
{"foo" : "blah blah blah",
"bar" : "bla bla bla",
"baz" : [{"href" : "someid"}, {"href" : "otherid"}, ...],
... }
Я хочу, чтобы сделать поиск, который находит все документы, в которых id
происходит в одном из href
поддокументов. Если я установил baz.href
, чтобы быть неанализируемым в сопоставлении, я могу найти baz.href
с запросом термина просто.
Однако, я действительно хочу, чтобы иметь возможность искать этот идентификатор независимо от того, где он происходит. Он может быть в baz.href
, quux.href
, или whatever.href
. Поиск в _all
будет вполне приемлемым.
Однако я просто не могу выполнить эту работу. Я никогда не получаю никаких результатов, если не буду искать точно baz.href
.
Я попытался установить include_in_all
на baz
в картографии, но безрезультатно. Я попытался установить его на baz.href
, и это тоже не сработало.
Я знаю, что я мог бы дублировать идентификаторы в отдельном поле all_hrefs
на верхнем уровне, но это лишний раз взрывает документы и просто кажется уродливым. Списки ссылок могут быть довольно большими. Я мог бы также разобрать мои собственные сопоставления и найти все href
s, чтобы я мог явно указать все поля href
в запросе, но по мере роста модели данных, которая больше не будет масштабироваться.
Помощь?
Update: Отображение для datasets
поля (и во всех других областях, которые содержат href
S выглядит следующим образом):
"datasets" : {
"properties" : {
"href" : {
"include_in_all" : true,
"index" : "not_analyzed",
"type" : "string"
}
},
"type" : "nested"
},
Я попытался с падением nested
, и опуская include_in_all
, но это не имеет значения. Когда у меня было nested
, я мог бы использовать вложенный запрос, но path
должен быть установлен в datasets
, потому что *
терпит неудачу, так как не все поля содержат вложенные объекты.
К сожалению, это не работает для меня. Разница в том, что в моем случае подполе 'href' имеют индекс: not_analyzed', что необходимо, чтобы избежать ложных срабатываний от аналогичных идентификаторов. Я пробовал '* .href' в терминах query, но это не работает.Я также попытался установить 'analyzer: keyword' в запросе' query_string', но это тоже не сработало. Спасибо вам большое за попытку! –
Не могли бы вы сбросить образец отображения, которое вы используете для этого индекса? Это поможет воспроизвести проблему и поможет устранить ее. –
Я снова попробовал ваше предложение с 5.1, и у меня есть результаты поиска, но я получаю слишком много. Я хочу выполнить поиск по ID, но поиск находит значения, похожие, но не идентичные. –