Elasticsearch匹配前缀,未找到匹配项

时间:2014-04-09 02:31:13

标签: elasticsearch

关于一些基本查询的弹性搜索教程:

#Create the index with no mapping
curl -XPUT 127.0.0.1:9200/startswith/

#add some data
curl -XPOST 127.0.0.1:9200/startswith/test/ -d '{"title":"river dog"}'
curl -XPOST 127.0.0.1:9200/startswith/test/ -d '{"title":"data"}'
curl -XPOST 127.0.0.1:9200/startswith/test/ -d '{"title":"drive"}'
curl -XPOST 127.0.0.1:9200/startswith/test/ -d '{"title":"dzone"}'

#try to perform a "starts-with" style query...
curl -XGET 127.0.0.1:9200/startswith/test/_search?pretty -d '{
        "query": {
        "match_phrase_prefix": {
           "title": {
             "query": "d",
             "max_expansions": 5
           }
         }
       }
     }' | grep title

但是我收到了消息no matches found: 127.0.0.1:9200/startswith/test/_search?pretty。如果我访问http://127.0.0.1:9200/startswith/test/_search或卷曲它,结果就在那里。我错过了什么?

3 个答案:

答案 0 :(得分:3)

这是一个shell问题。

zsh使用?进行外卡匹配,因此您必须引用它以在文字字符串中使用。

例如;

> echo ?
zsh: no matches found: ?

> echo 127.0.0.1:9200/startswith/test/_search?pretty
zsh: no matches found: 127.0.0.1:9200/startswith/test/_search?pretty

要在zsh中修复它,请引用字符串;

> echo "127.0.0.1:9200/startswith/test/_search?pretty"
127.0.0.1:9200/startswith/test/_search?pretty

...或用反斜杠转义问号;

> echo 127.0.0.1:9200/startswith/test/_search\?pretty
127.0.0.1:9200/startswith/test/_search?pretty

答案 1 :(得分:1)

我发现了这个问题 - 有点像:

curl -XGET 127.0.0.1:9200/startswith/test/_search?pretty -d '

什么有效:

curl -XGET '127.0.0.1:9200/startswith/test/_search?pretty' -d '

我需要网址引用。

$ curl -V
curl 7.35.0 (x86_64-apple-darwin13.1.0) libcurl/7.35.0 SecureTransport zlib/1.2.5
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp
Features: IPv6 Largefile NTLM NTLM_WB SSL libz

我在2个不同的模拟器中运行该命令。 URL周围需要引用,但我不确定原因。任何可以告诉我的人的奖励积分,因为它似乎不是标志所必需的。

我使用的是zsh,而不是bash。

答案 2 :(得分:0)

在zsh上,将网址用引号引起来

curl -X PUT "http://localhost:9200/userindex1?pretty"