如何设置弹性搜索,允许我搜索部分单词或单词的开头。
当我运行以下脚本时,它找不到前缀' inte'除非我这样做,否则就会出现问题。
我无法弄清楚这里有什么问题!
echo "--- DELETING OLD INDEX ---"
curl -XDELETE 'http://localhost:9200/searchtest?pretty'
echo "--- CREATING INDEX ---"
curl -XPUT 'http://127.0.0.1:9200/searchtest/?pretty=1' -d '{
"mappings" : {
"mytype" : {
"properties" : {
"description": {
"type": "string",
"index_analyzer": "my_analyzer",
"search_analyzer": "standard"
}
}
}
},
"settings" : {
"analysis" : {
"analyzer" : {
"my_analyzer" : {
"filter" : [ "standard", "lowercase", "stop" ],
"type" : "custom",
"tokenizer" : "my_tokenizer"
}
},
"tokenizer" : {
"my_tokenizer" : {
"side" : "front",
"max_gram" : 200,
"type" : "edgeNGram"
}
}
}
}
}'
echo "--- INSERTING RECORDS ---"
curl -XPOST 'http://localhost:9200/searchtest/mytype?pretty=1' -d '{
"description": "Programming International!"
}'
curl -XPOST 'http://localhost:9200/searchtest/mytype?pretty=1' -d '{
"description": "i18n is internationalizatin"
}'
echo "--- REFRESH ---"
curl -XPOST 'http://localhost:9200/_refresh?pretty=1'
echo "--- RUNNING QUERY WITH * ---"
curl -XGET 'http://localhost:9200/searchtest/mytype/_search?pretty' -d '
{
"query" : {
"query_string" : {
"query" : "inte*"
}
}
}'
echo "--- RUNNING QUERY ---"
curl -XGET 'http://localhost:9200/searchtest/mytype/_search?pretty' -d '
{
"query" : {
"query_string" : {
"query" : "inte"
}
}
}'
[我正在使用elasticsearch 0.90.9]
答案 0 :(得分:2)
没有任何问题,query_string使用支持通配符的查询解析器,你可以看到here。
也许您正在寻找一个前缀查询,该查询匹配以给定前缀开头的字词,请查看此link
curl -XGET 'http://localhost:9200/searchtest/mytype/_search?pretty' -d '
{
"query" : {
"prefix" : {
"description" : {
"value" : "inte"
}
}
}
}'
答案 1 :(得分:0)
我认为您正在寻找通配符查询...
curl -XPOST "http://_search" -d'
{
"query": {
"wildcard": {
"description": {
"value": "inte*"
}
}
}
}'
尝试使用通配符进行上述查询以及正则表达式查询..!
它有帮助......!