Есть ли способ для меня условно связать несколько индексов в запросе? - PullRequest
0 голосов
/ 25 марта 2019

В моем кластере у меня есть два индекса, один из которых содержит информацию о сотруднике и членство в группах, а другой - информацию о группе, такую ​​как идентификатор, имена, proxy_id и т. Д. Они будут называться индексом сотрудника и индексом группы соответственно.

Я хотел бы создать запрос, который будет возвращать документы пользователям только при условии, что они являются частью правильной группы. К сожалению, к документам будет прикреплен только один из нескольких proxy_ids. Чтобы вернуть правильный документ, мой запрос должен будет проверить индекс пользователя и убедиться, что членство в его группах соответствует требованиям, проверив каждую группу, к которой они принадлежат, и проверив каждый прокси-адрес в соответствии с текущим документом.

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

Любой совет будет принят с благодарностью. Спасибо!

Это для Эластичного Поискового Кластера, в котором работает Elastic 6.6

Ответы [ 2 ]

0 голосов
/ 25 марта 2019

Вы можете добавить несколько индексов .. скажем, в узле js .. как-то так

elasticClient.search({
                         index: 'pubmed-index,biorxiv-index',
                          type: 'pubmed-paper,biorxiv-paper',
                         "size": 10,
                          body: {
                            "query": {
                              "bool": {
                                  "must": [

                                      {
                                          "query_string": {
                                              "query": `${searchKeyword}`,
                                              "default_operator": "AND",
                                              "fields":[]
                                          }
                                      },
                                      {
                                          "query_string": {
                                              "query": `${pubType[0]}`,

                                              "fields": [
                                                  "Publication Type"
                                              ]
                                          }
                                      },
                                       {
                                          "query_string": {
                                              "query": `${searchJournal}`,

                                              "fields": [
                                                  "Journal"
                                              ]
                                          }
                                      }

                                  ]
                                  ,
                                  "filter": [

                                      {

                                          "range": {
                                              "Date Revised": {
                                                  "gte":`${searchGreaterYear}`,
                                                  "lte": `${searchLesserYear}`,
                                                  "format": "yyyy"
                                              }
                                          }
                                      }
                                  ]
                              }
                          }
                      }
                        }).then(function (resp) {
                            console.log(searchPublicationType[0],searchLesserYear,searchGreaterYear,searchKeyword);
                            // return res.json(resp)
                        return res.json({source:resp.hits.hits,total:resp.hits})
                         // return res.json('Hi')
                        }, function (err) {
                            console.log(err.message);
                            return res.json(err.message)
                        })
0 голосов
/ 25 марта 2019

Нет эффективного способа выполнения объединений вasticsearch, однако вы можете добавить необходимую информацию в пользовательские документы. Вы должны попытаться денормализовать ваши данные в максимально возможной степени. Старайтесь хранить всю необходимую информацию в одном документе - не заботьтесь о дублированных данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...