Elasticsearch完成

时间:2014-03-17 13:19:52

标签: php elasticsearch

我有一个弹性搜索索引,我每10分钟通过cronjob更新一次。在这个索引中,我有一个完成字段,按预期工作。 但我有一个小问题。让我们说我有一篇文章"我改变一个值的字段,从" a"到" b"。 10分钟后,索引已经更新,文件中包含文章" a"已更新为文章" b"。一切都如预期的那样。 但我的完成字段现在包含两个值。 ""和" b"两者都有相同的身份。

这怎么可能发生?

2 个答案:

答案 0 :(得分:0)

映射:

'suggest'   => array(
    'type'                => 'completion',
    'payloads'            => true,
    'preserve_separators' => false,
    'search_analyzer'     => 'standard',
    'index_analyzer'      => 'standard'
),

我如何设置字段:

'suggest'  => array(
    'input'   => array(
        $result["Name"],
        $result["Name"],
        $result["Name2"],
        $result["Name3"],
        $result["Name4"],
        $result["Name5"]
    ),
    'output'  => $result["Name"].' (' . $result["Name1"].', '.$result["Name2"].')',
    'payload' => array(
        'id' => $result["ID"]
     )
 )

答案 1 :(得分:0)

在文档中找到答案。

  

建议数据结构可能不会立即反映文档上的删除。您可能需要为此进行优化。您可以使用only_expunge_deletes = true调用optimize来仅满足删除操作或者调用Merge操作。