我已将索引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"
}
}
}
}
}'
答案 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"
}
}
}
}
}'