Elasticsearch几乎实时提供数据操作和搜索功能。默认情况下,从索引/更新/删除数据到搜索结果中显示的时间,您可能会有一秒钟的延迟(刷新间隔)。这是与SQL等其他平台的重要区别,其中数据在事务完成后立即可用。

    索引/替换文档 我们之前已经看到了如何索引单个文档。让我们再次回忆一下这个命令:

    1. PUT /customer/_doc/1?pretty
    2. {
    3. "name": "John Doe"
    4. }

    同样,上面将指定的文档索引到客户索引中,ID为1.如果我们再使用不同(或相同)的文档执行上述命令,Elasticsearch将替换(即重新索引)新文档。ID为1的现有ID:

    1. PUT /customer/_doc/1?pretty
    2. {
    3. "name": "Jane Doe"
    4. }

    以上内容将ID为1的文档名称从“John Doe”更改为“Jane Doe”。另一方面,如果我们使用不同的ID,则将索引新文档,并且索引中已有的现有文档保持不变。

    1. PUT /customer/_doc/2?pretty
    2. {
    3. "name": "Jane Doe"
    4. }

    以上索引ID为2的新文档。

    索引时,ID部分是可选的。如果未指定,Elasticsearch将生成随机ID,然后使用它来索引文档。Elasticsearch生成的实际ID(或前面示例中显式指定的内容)将作为索引API调用的一部分返回。

    此示例显示如何在没有显式ID的情况下索引文档:

    1. POST /customer/_doc?pretty
    2. {
    3. "name": "Jane Doe"
    4. }

    请注意,在上面的情况中,我们使用POST动词而不是PUT,因为我们没有指定ID。