gpt4 book ai didi

elasticsearch - 排除 Elasticsearch 查询中的字段

转载 作者:行者123 更新时间:2023-12-02 22:12:07 26 4
gpt4 key购买 nike

具有以下映射:

curl -XPUT 'localhost:9200/testidx?pretty=true' -d '{
"mappings": {
"items": {
"dynamic": "strict",
"properties" : {
"title" : { "type": "string" },
"body" : { "type": "string" }
}}}}'

我在上面放了两个项目:
curl -XPUT 'localhost:9200/testidx/items/1' -d '{
"title": "Titulo anterior",
"body": "blablabla blablabla blablabla blablabla blablabla blablabla"
}'

curl -XPUT 'localhost:9200/testidx/items/2' -d '{
"title": "Joselr",
"body": "Titulo stuff more stuff"
}'

现在我想搜索词 titulo在每个领域,除了 body ,所以我要做的是(遵循 this 帖子):
curl -XGET 'localhost:9200/testidx/items/_search?pretty=true' -d '{
"query" : {
"query_string": {
"query": "Titulo"
}},
"_source" : {
"exclude" : ["*.body"]
}
}'

它应该只显示 1项目,因为第二个有词 Titulo但它在 body 上这就是我想忽略的。如何存档?

PS:这只是一个简单的例子,我有一个包含很多属性的映射,我想在某些搜索中忽略其中的一些。
PS2:我使用的是 ES 2.3.2

最佳答案

_source/exclude设置仅对不返回 body 有用字段,但这并不排除该字段被搜索。

您可以做的是指定要搜索的所有字段(白名单方法)

curl -XGET 'localhost:9200/testidx/items/_search?pretty=true' -d '{
"query" : {
"query_string": {
"fields": ["title", "field2", "field3"], <-- add this
"query": "Titulo"
}},
"_source" : {
"exclude" : ["*.body"]
}
}'

您可以做的另一件事是明确指定 body不应与 -body:Titulo 匹配
curl -XGET 'localhost:9200/testidx/items/_search?pretty=true' -d '{
"query" : {
"query_string": {
"query": "Titulo AND -body:Titulo" <-- modify this
}},
"_source" : {
"exclude" : ["*.body"]
}
}'

关于elasticsearch - 排除 Elasticsearch 查询中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39451688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com