如何让elasticsearch执行完全匹配查询?

这是一个分为两个部分的问题。

我的文档如下所示:

{"url": "https://someurl.com", 

"content": "searchable content here",

"hash": "c54cc9cdd4a79ca10a891b8d1b7783c295455040",

"headings": "more searchable content",

"title": "Page Title"}

我的第一个问题是如何检索“ title” 恰好是 “ No Title”的所有文档。我不希望出现标题为“此文档没有标题”的文档。

我的第二个问题是如何检索“ URL” 恰好 出现在一长串URL中的所有文档。

我正在使用pyelasticsearch,但是在curl中使用通用答案也可以。

回答:

如果您存储了源代码(这是默认设置),则可以使用脚本过滤器

它应该是这样的:

$ curl -XPUT localhost:9200/index/type/1 -d '{"foo": "bar"}'

$ curl -XPUT localhost:9200/index/type/2 -d '{"foo": "bar baz"}'

$ curl -XPOST localhost:9200/index/type/_search?pretty=true -d '{

"filter": {

"script": {

"script": "_source.foo == \"bar\""

}

}

}'

{

"took" : 2,

"timed_out" : false,

"_shards" : {

"total" : 5,

"successful" : 5,

"failed" : 0

},

"hits" : {

"total" : 1,

"max_score" : 1.0,

"hits" : [ {

"_index" : "index",

"_type" : "type",

"_id" : "1",

"_score" : 1.0, "_source" : {"foo": "bar"}

} ]

}

}

:我认为值得一提的是,“

not_analyzed”映射应该是更快的方法。但是,如果您想同时对该字段进行完全匹配和部分匹配,则可以看到两个选项:使用脚本或对数据进行两次索引(一次分析,一次不分析)。

以上是 如何让elasticsearch执行完全匹配查询? 的全部内容, 来源链接: utcz.com/qa/424330.html

回到顶部