如何在弹性搜索中使用split_on_whitespace?

时间:2017-01-24 13:52:09

标签: search elasticsearch

我想在搜索查询中使用split_on_whitespace,但无法弄明白。查询将有一个字符串,如:“hello world”。我不想拆分查询词

1 个答案:

答案 0 :(得分:1)

首先确保不分析您要搜索的字段的映射。因此ES不会分析字段中的单词并将其存储为单个文本。

所以你的映射将是这样的:

    curl -XPUT localhost:9200/index_name -d '{
      "mappings": {
       "type_name": {
           "properties": {
               "field_to_search": {
                   "type": "string",
                   "index": "not_analyzed"
               },
            ...(other fields)
          }
       }
    }
    }

然后您可以在该字段上执行术语查询。

curl -XPOST localhost:9200/index_name/type_name/_search -d '{
    "query": {
        "term": {
           "field_to_search": "hello world"
         }
     }
 }

您可以查看弹性搜索的术语查询和匹配查询之间的区别,以了解为什么需要术语查询。