弹性搜索中的完全匹配搜索不起作用

时间:2015-04-02 21:16:43

标签: elasticsearch

我已将索引title_o作为非索引字段。查询以获得精确搜索不会返回结果。我需要在title_o匹配时找到文件,这是test1。请帮忙。

Indexed following documents:
curl -XPUT 'http://localhost:9200/test/test10/1' -d '
{
    "doi":"1234",
    "title":"this is test1",
     "title_o":"this is test1"

}'



curl -XPUT 'http://localhost:9200/test/test10/3' -d '
{
    "doi":"1234",
    "title":"this is test3",
     "title_o":"this is test3"

}'

Search:
curl -XGET 'http://localhost:9200/test/test10/_search?pretty=true' -d '
{
    "query" : {
        "filtered" : {
            "filter" : {
                "term" : {
                    "title_o" : "this is test1"
                }
            }
        }
    }
}'

3 个答案:

答案 0 :(得分:1)

对于精确/术语匹配,请使用未分析的字段,

工作代码:

curl -XGET 'http://localhost:9200/test/test10/_search?pretty=true' -d '
{
    "query" : {
        "filtered" : {
            "filter" : {
                "term" : {
                    "title_o.keyword" : "this is test1"
                }
            }
        }
    }
}'

答案 1 :(得分:0)

如果您将标题字段映射为" index":" no",这会告诉ElasticSearch使此字段不可用于搜索。在您的情况下,请确保您的字段映射为"索引":" not_analyzed"如果您打算使用此字段进行精确的字符串匹配。

答案 2 :(得分:0)

卷曲要求您发表评论:

curl -XGET 'localhost:9200/test/test10/_search?pretty=true' -d ' { "query" : { "filtered" : { "filter" : { "term" : { "title.title_o" : "This is test6" } } } } }'

与问题中发布的内容不同。

这应该有效:

curl -XGET 'http://localhost:9200/test/test10/_search?pretty=true' -d '
{
    "query" : {
        "filtered" : {
            "filter" : {
                "term" : {
                    "title_o" : "this is test1"
                }
            }
        }
    }
}'