ElasticSearch搜索问题

时间:2014-08-21 21:57:26

标签: json elasticsearch

我设置了ElasticSearch,我可以上传我的文件。它包含一个json对象列表。

     {
        "Indicator": "Alabama",
        "Level": 468671,
        "Units": "Billion Btu",
        "As Of": 2011,
        "YTD": "-4.95%",
        "-5": 469036,
        "-10": 460201
    },
    {
        "Indicator": "Alaska",
        "Level": 33524,
        "Units": "Billion Btu",
        "As Of": 2011,
        "YTD": "-0.10%",
        "-5": 20654,
        "-10": 17878
    },
    {
        "Indicator": "Arizona",
        "Level": 174841,
        "Units": "Billion Btu",
        "As Of": 2011,
        "YTD": "4.12%",
        "-5": 173934,
        "-10": 280064
    }

我使用了命令

    curl -XPUT 'http://localhost:9200/coal/production/1' -d @coal.json 

并插入索引。但是,当我去查询它时,我得到了一切。

这是我正在运行的查询。

    curl -XGET 'http:localhost:9200/coal/production/_search' -d '{
"query": {
            "match": {
                "Indicator": "Alabama"
            }
        }
}'

我想只收回第一件商品。我是否错误地设置了索引?我觉得我在这里错过了一些东西。

1 个答案:

答案 0 :(得分:3)

这是因为您已将3个文档编入索引为只有一个:使用PUT / {index} / {type} / {id}是您执行单个插入的方式。

尝试制作match_all这样的查询:

curl -XGET 'http:localhost:9200/coal/production/_search'

您将看到只有一个包含所有内容的文档。

您有两种可能的解决方案,请选择:

  • 将这三个项目分开并逐一索引(PUT /煤炭/生产/ 1,然后是2和3)
  • 使用批量API 但请注意:它有一种特殊格式可供使用,只需查看documentation