分析相同的搜索字段两次会在ElasticSearch中的子字段上返回0结果

时间:2016-03-11 08:57:37

标签: ruby elasticsearch elasticsearch-ruby

我有一个名为search_text的字段,它是一个全文搜索字段。

我使用ngrams索引这个字段,我想添加一个新的子字段search_text.words,它将对整个单词进行索引。

我尝试实现此功能,但查询search_text.words始终会返回0次点击。

我正在创建它:

  "search_text" => {
      "type" => "string",
      "analyzer" => "ngram",
      "search_analyzer" => "ngram_search",
      "fields" => {
          "words" => {"type" => "string",
                      "analyzer" => "ngram_search"}
      }
  }

我在这里有一个完整的演示:

https://www.dropbox.com/s/wwxm3qe0oxc2z5y/Slimmed%20ElasticSearch%20Text%20%281%29.html?dl=0

1 个答案:

答案 0 :(得分:1)

查看您的Dropbox文件,我认为问题是映射类型称为search_variable,而在批量查询中您使用的映射类型为test_type

因此永远不会应用映射。

如果您将批量查询更改为此内容,则可以使用

bulk_insert_items = items_to_insert.flat_map do |item|
      [
        {index: {_index: 'test_index', _type: 'search_variable'}},
        item
      ]
end