我想在搜索查询中使用split_on_whitespace,但无法弄明白。查询将有一个字符串,如:“hello world”。我不想拆分查询词
答案 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"
}
}
}
您可以查看弹性搜索的术语查询和匹配查询之间的区别,以了解为什么需要术语查询。