弹性:startOffset必须为非负数,endOffset必须为> = startOffset,并且偏移量不得向后

时间:2018-07-19 13:34:14

标签: elasticsearch lucene

我已经使用Elastic实现了搜索。以下是我的Analyse配置

 $aAnalizerArray = [
        "edgeTokenizer" => [
            "tokenizer"=>"edgeTokenizer",
            "filter" => [
                "word_delimiter_graph",
                "lowercase",
                "unique"
            ]
        ],
    ];

  $wbTokenizer = [
        "edgeTokenizer"=>[
            "type"=> "nGram", //edgeNGram
            "min_gram"=>"2",
            "max_gram"=> "8",
            "token_chars"=> [
                "letter",
                "digit"
            ]
        ]
    ];

但是,当我插入SeaShell Inc时,出现如下错误:

{"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"startOffset must be non-negative, and endOffset must be >= startOffset, and offsets must not go backwards startOffset=1,endOffset=3,lastStartOffset=3 for field 'company_name'"}],"type":"illegal_argument_exception","reason":"startOffset must be non-negative, and endOffset must be >= startOffset, and offsets must not go backwards startOffset=1,endOffset=3,lastStartOffset=3 for field 'company_name'"},"status":400}

但是如果它是Sea Shell Inc,那么就没有问题。我的弹性版本是6.X

有什么解决方法吗?

1 个答案:

答案 0 :(得分:0)

这个问题可能是因为 word_delimiter_graph 的配置参数引起的,因为有些 word_delimiter_graph 中的设置可以生成多位置标记,索引不支持这些标记。下面列出了可能导致此问题的配置参数:

adjust_offsets:当设置为“false”时

catenate_all:当设置为“true”时

catenate_numbers:当设置为“true”时

catenate_words:当设置为“true”时

preserve_original:设置为“真”时

有关更多信息,您可以查看 Elastic search here 的文档。