我的目标是将提升应用于字段“名称”(参见下面的示例),但是当我搜索“约翰”时遇到两个问题:
{name: "dany", message: "hi bob"}
当名称为“dany”并且搜索也匹配- 搜索没有提升名称而不是消息(名称=“john”的行应该在顶部)
要点在https://gist.github.com/tomaspet262/5535774
(因为 stackoverflow 的表单提交返回“您的帖子似乎包含格式不正确的代码”,格式正确)。
我的目标是将提升应用于字段“名称”(参见下面的示例),但是当我搜索“约翰”时遇到两个问题:
{name: "dany", message: "hi bob"}
当名称为“dany”并且搜索也匹配要点在https://gist.github.com/tomaspet262/5535774
(因为 stackoverflow 的表单提交返回“您的帖子似乎包含格式不正确的代码”,格式正确)。
我不确定这在这种情况下是否相关,但是在使用如此少量的数据进行测试时,我总是使用 1 个分片而不是默认设置,以确保不会因为分布式计算而出现问题。
我建议使用查询时间提升而不是索引时间提升。
#DELETE
curl -XDELETE 'http://localhost:9200/test'
echo
# CREATE
curl -XPUT 'http://localhost:9200/test?pretty=1' -d '{
"settings": {
"analysis" : {
"analyzer" : {
"my_analyz_1" : {
"filter" : [
"standard",
"lowercase",
"asciifolding"
],
"type" : "custom",
"tokenizer" : "standard"
}
}
}
}
}'
echo
# DEFINE
curl -XPUT 'http://localhost:9200/test/posts/_mapping?pretty=1' -d '{
"posts" : {
"properties" : {
"name" : {
"type" : "string",
"analyzer" : "my_analyz_1"
},
"message" : {
"type" : "string",
"analyzer" : "my_analyz_1"
}
}
}
}'
echo
# INSERT
curl localhost:9200/test/posts/1 -d '{name: "john", message: "hi john"}'
curl localhost:9200/test/posts/2 -d '{name: "bob", message: "hi john, how are you?"}'
curl localhost:9200/test/posts/3 -d '{name: "john", message: "bob?"}'
curl localhost:9200/test/posts/4 -d '{name: "dany", message: "hi bob"}'
curl localhost:9200/test/posts/5 -d '{name: "dany", message: "hi john"}'
echo
# REFRESH
curl -XPOST localhost:9200/test/_refresh
echo
# SEARCH
curl "localhost:9200/test/posts/_search?pretty=1" -d '{
"query": {
"multi_match": {
"query": "john",
"fields": ["name^2", "message"]
}
}
}'