如何将数据插入Elasticsearch


72

我是Elasticearch的新手,并且已经尝试了2天,将一些数据插入Elasticearch。我在Google上发现有很多页面可以帮助创建索引(我不清楚“ index”,换句话说是“插入”吗?)然后很多地方给出了curl命令,但我确实没有知道在哪里执行这些代码行以插入数据。例:

curl -XPOST "http://[localhost]:9200/indexname/typename/optionalUniqueId" -d '{ "field" : "value" }'

我正在使用Window 7,并且已经安装Java并成功运行elasticsearch。任何人都可以向我展示有关如何将数据插入Elasticearch的更多详细信息

非常感谢

Answers:


81

您必须先curl在PC中安装二进制文件。您可以从此处下载。

之后,将其解压缩到文件夹中。可以说C:\curl。在该文件夹中,您将找到curl.exe包含多个.dll文件的文件。

现在,通过键入cmd来打开命令提示符start menu。并cd c:\curl在那里键入内容,它将带您进入curl文件夹。现在执行curl您拥有的命令。

一方面,Windows不支持在字段周围使用单引号。因此,您必须使用双引号。例如,我已将您的curl命令转换为适当的命令。

curl -H "Content-Type: application/json" -XPOST "http://localhost:9200/indexname/typename/optionalUniqueId" -d "{ \"field\" : \"value\"}"

1
谢谢Sabuj,我安装了CURL并运行代码,它在'data'文件夹中创建了一个索引名。但是任何时候我需要将数据插入ElasticSearch时,都必须使用诸如CURL,RESTClient之类的工具。据我了解,ElasticSearch使用Web服务来与数据联系,对吗?如果我需要使用我的应用程序与Elastic交互,该怎么做?非常感谢

我对此并不了解ElasticSearch。可能正在POST GET从您的应用程序执行请求。不确定,原因是我不知道如何使用编写应用程序ElasticSearch
Sabuj Hassan 2014年

谢谢Sabuj Hassan,我会发现更多东西的时候再回来。但是,请您也可以帮助将.json文件插入Elastic吗?我现在可以在Elastic中插入一条测试记录,但是我需要放入大约200个.json文件。代码行curl -XPOST“ localhost:9200 / pattentdb / pattent / 1 ” -@data1.json对我不起作用(data1.json是我的.json文件)

谢谢Sabuj Hassan,您对我有很大帮助。顺便说一句,我必须使用文件的完整路径,而不是仅使用带有扩展名的文件名(我只是认为它将识别同一目录中的文件,但不能识别)

@ tedder42您能解释为什么我们在Windows上使用\“吗?为什么只在{}中使用吗?
haneul kim 19-10-23

14

让我清楚地解释..如果您熟悉rdbms ..索引是数据库..索引类型是表..这意味着索引是索引类型的集合。

在NOSQL中。索引是数据库,索引类型是集合。集合组作为数据库。

要执行这些查询...您需要为Windows安装CURL。

Curl只是命令行休息工具。如果您需要图形工具,请尝试。

chrome的Sense插件...

希望能帮助到你..


尊敬的BlackPop,谢谢您的答复。我已阅读并现在使用RESTClient。我尝试搜索chrome的Sense插件,但Google appstore中只有AdSense。顺便说一句,如何使用这些工具将记录插入Elatic?非常感谢

感应插件专为Elasticsearch设计。试着感觉插上铬..它可以单独Chrome浏览器..试试吧
BlackPOP

1
在Elasticsearch中,索引具有许多不同的含义。这也是一个动作。如果您为文档建立索引,则将其添加到Elasticsearch进行索引。请记住,Elasticsearch是您存储在其中的数据的搜索引擎。
Ellesedil

只是要补充一点,“类型”可以与关系数据库中的表进行比较,但实际上在Elasticsearch或更具体的Lucene库中并不存在,似乎在7版本类型中已被删除,索引将直接触发以与Lucene对齐。
Ashish Dadhore

11

如果您将KIBANA与elasticsearch结合使用,则可以使用以下RESt请求创建并放入索引。

创建索引:

http://localhost:9200/company
PUT company
{
  "settings": {
    "index": {
      "number_of_shards": 1,
      "number_of_replicas": 1
    },
    "analysis": {
      "analyzer": {
        "analyzer-name": {
          "type": "custom",
          "tokenizer": "keyword",
          "filter": "lowercase"
        }
      }
    }
  },
  "mappings": {
    "employee": {
      "properties": {
        "age": {
          "type": "long"
        },
        "experience": {
          "type": "long"
        },
        "name": {
          "type": "text",
          "analyzer": "analyzer-name"
        }
      }
    }
  }
}

创建文件:

POST http://localhost:9200/company/employee/2/_create
{
"name": "Hemani",
"age" : 23,
"experienceInYears" : 2
}

7

要测试和尝试Windows中的curl请求,可以使用Postman客户端Chrome扩展程序。它非常易于使用且功能强大。

或者按照建议,您可以安装cURL util。

样本卷曲请求如下。

curl -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{
"user" : "Arun Thundyill Saseendran",
"post_date" : "2009-03-23T12:30:00",
"message" : "trying out Elasticsearch"
}' "http://10.103.102.56:9200/sampleindex/sampletype/"

我也正在广泛地探索和探索ES。因此,如果您还有其他疑问,请告诉我。

编辑:将索引名称和类型名称更新为完全小写,以避免出现错误并遵循约定。


从该代码中,我得到一个错误,指出索引名称必须为小写。更改为simpleindex并成功调用。

3

我开始使用curl,但由于已迁移使用kibana。这是来自elastic.co的关于ELK堆栈的更多信息(E弹性搜索,K kibana):https ://www.elastic.co/elk-stack

使用kibana,您的POST请求会更简单:

POST /<INDEX_NAME>/<TYPE_NAME>
{
    "field": "value",
    "id": 1,
    "account_id": 213,
    "name": "kimchy"
}

1

为了避免使用curl或Chrome插件,您只需使用内置的Windows Powershell。在Powershell命令窗口中运行

Invoke-WebRequest -UseBasicParsing "http://127.0.0.1:9200/sampleindex/sampleType/" -
Method POST -ContentType "application/json" -Body '{
"user" : "Test",
"post_date" : "2017/11/13 11:07:00",
"message" : "trying out Elasticsearch"
}'

注意,索引名称必须为小写。


-4

简单的基础,Elastic社区公开了将索引,搜索,删除操作作为其余的Web服务公开。您可以使用curl或sense(chrome插件)或其他诸如邮递员之类的其他客户端来进行弹性交互。

如果您只是测试一些命令,我​​建议您可以使用Sense chrome插件,该插件现在具有简单的UI和相当成熟的插件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.