Когда интегрироватьasticsearch с d3.js, «Uncaught TypeError: Не удается прочитать свойство« Клиент »неопределенного», я получаю эту ошибку - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь быть клиентом, используя API эластичного поиска.Моя цель - стать клиентом Elasticsearch и попытаться преобразовать данные в графику на моей собственной веб-странице.И тогда я получил такую ​​ошибку.Как решить эту проблему?

Или вы можете дать мне другой источник или пример по этому поводу?

index.xhtml

 <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Elastic Aggregations</title>
        <script src="scripts/require.js"></script>
        <script>require(["scripts/main"], function () {});</script>
        <style>
            body {
                font: 14px sans-serif;
            }
            .arc path {
                stroke: #fff; 
                stroke-width: 3px;
            }
        </style>
    </head>
    <body>
        <div id="donut-chart"></div>
    </body>
</html>

main.js

define(['scripts/d3.v3', 'scripts/elasticsearch'], function (d3, elasticsearch) {
    "use strict";
    var client = new elasticsearch.Client({
        host: 'http://localhost:9200',
        log: 'trace'
    });
    client.search({
        index: 'nfl',
        size: 5,
        body: {
            // Begin query.
            query: {
                // Boolean query for matching and excluding items.
                bool: {
                    must: {match: {"description": "TOUCHDOWN"}},
                    must_not: {match: {"qtr": 5}}
                }
            },
            // Aggregate on the results
            aggs: {
                touchdowns: {
                    terms: {
                        field: "qtr",
                        // order by quarter, ascending
                        order: {"_term": "asc"}
                    }
                }
            }
            // End query.
        }
    }).then(function (resp) {
        console.log(resp);
        // D3 code goes here.
        var touchdowns = resp.aggregations.touchdowns.buckets;
        // d3 donut chart
        var width = 600,
                height = 300,
                radius = Math.min(width, height) / 2;
        var color = ['#ff7f0e', '#d62728', '#2ca02c', '#1f77b4'];
        var arc = d3.svg.arc()
                .outerRadius(radius - 60)
                .innerRadius(120);
        var pie = d3.layout.pie()
                .sort(null)
                .value(function (d) {
                    return d.doc_count;
                });
        var svg = d3.select("#donut-chart").append("svg")
                .attr("width", width)
                .attr("height", height)
                .append("g")
                .attr("transform", "translate(" + width / 1.4 + "," + height / 2 + ")");
        var g = svg.selectAll(".arc")
                .data(pie(touchdowns))
                .enter()
                .append("g")
                .attr("class", "arc");
        g.append("path")
                .attr("d", arc)
                .style("fill", function (d, i) {
                    return color[i];
                });
        g.append("text")
                .attr("transform", function (d) {
                    return "translate(" + arc.centroid(d) + ")";
                })
                .attr("dy", ".35em")
                .style("text-anchor", "middle")
                .style("fill", "white")
                .text(function (d) {
                    return d.data.key;
                });
    });
});

и каталог

|
|-scripts
|    |-main.js
|    |-elasticsearch.js  
|    |-require.js
|    |-d3.v3.js
|
|-index.xhtml

и сообщение об ошибке;

Uncaught TypeError: Cannot read property 'Client' of undefined
    at VM899 main.js:3
    at Object.execCb (require.js:1650)
    at Module.check (require.js:866)
    at Module.<anonymous> (require.js:1113)
    at require.js:132
    at require.js:1156
    at each (require.js:57)
    at Module.emit (require.js:1155)
    at Module.check (require.js:917)
    at Module.enable (require.js:1143)

1 Ответ

0 голосов
/ 11 июня 2018

Кажется, вы используете версию Node.

Попробуйте импортировать эту версию: https://www.npmjs.com/package/elasticsearch-browser

...