Как получить название свойств сопоставления поиска elasti c из интерфейса React - PullRequest
0 голосов
/ 28 мая 2020

Я хочу знать, как получить только свойства внутри сопоставления с помощью интерфейса реакции. это сопоставление находится в моем бэкэнде. Я хочу получить только свойства, а не значение, используя поисковый запрос elasti c. Backend равен nodejs one. На выходе должны быть учетная запись, класс, team_members.id, team_members.name, team_members.priority.

  "mappings": {
            "properties": {
                "account": {"type": "integer"},
                  "class" : { "type" : "keyword",
                            "normalizer" : "my_normalizer"
                          },
                "team_members": {
                    "properties": {
                        "id": {"type": "integer"},
                        "name": {"type": "text"},
                        "priority": {"type": "integer"}
                    }
               }
          }
    }

Ответы [ 3 ]

0 голосов
/ 28 мая 2020

L oop значения

Object.values ​​() - получить значения объекта

Object.keys () - получить ключи объектов

class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      mappings: {
        meeting: {
          properties: {
            account: { type: "integer" },
            class: { type: "keyword", normalizer: "my_normalizer" },
            team_members: {
              properties: {
                id: { type: "integer" },
                name: { type: "text" },
                priority: { type: "integer" }
              }
            }
          }
        }
      }
    };
  }
  render() {
    let dataValue = [];
    Object.values(this.state.mappings).forEach((ele, i) => {
      console.log(ele.properties.account.type);
      console.log(ele.properties.class.type);
      console.log(ele.properties.class.normalizer);
      dataValue.push(<li>{ele.properties.account.type}</li>)
    });
    return <div>{dataValue}</div>;
  }
}
export default App;
0 голосов
/ 29 мая 2020

Вам необходимо вызвать _mapping конечную точку в кластере ElasticSearch с индексом, для которого требуется сопоставление. Ссылка: https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html#view -mapping

Во Frontend вам, возможно, придется написать синтаксический анализатор, который будет принимать это сопоставление и возвращать поля. Для этого вам понадобится собственный logi c.

Указанные вами сопоставления, я думаю, принадлежат ElasticSearch v7.

Note: Возможно, вам придется написать собственный парсер logi c в этом случае, поскольку могут быть другие решения, и каждое решение будет зависеть от требований.

0 голосов
/ 28 мая 2020

Вы имеете в виду, как получить значение properties в вашем объекте выше из внешнего интерфейса в качестве опоры? в таком случае вы можете просто разрушить опору в заголовке функции. Вместо (props) в заголовке функции просто используйте ({ mappings: { meeting: {properties}}}). Затем вы можете обычно использовать properties во внешнем интерфейсе как тип объекта. Например:

const funComponent = ({ mappings: { meeting: {properties}}}) => {
 // properties can now be used inside this function anywhere as an object.
// for example properties.account or proprties.team_members
return (
  ...
);

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