私はsearchkitを使って基本的なテキスト検索を構築しようとしています。私が構築したいクエリはかなり簡単だと思います。これは、このような構造にする必要があります:私は、私はそれがBoolMust
ではなくBoolShould
を使用したこと以外は何を望むかに私にかなり近い何かを与えたprefixQueryFields
属性を、使用してみました、それに加えて、常に含めた検索キットでSearchBoxを使用して複合クエリを作成するにはどうすればよいですか?
{
"query":{
"bool":{
"must":[
{
"multi_match":{
"query":"test search",
"type":"phrase_prefix",
"fields":[
"field_1^5",
"field_2^4",
"field_3"
]
}
},
{
"term":
{
"field_id": "3"
}
}
],
"must_not":[
{
"term":
{
"status": "archived"
}
}
]
}
},
"size":6,
"highlight":{
"fields":{
"field_1":{},
"field_2":{},
"field_3":{}
}
}
}
デフォルトのSimpleQueryString
クエリ私は簡単にそこに問題を把握し、SearchBox
にqueryBuilder
属性と一緒に行くことにしましたができませんでした
const prefixQueryFields = [
'field_1^5',
'field_2^4',
'field_3',
];
...
<SearchBox
searchOnChange={true}
prefixQueryFields={prefixQueryFields}
/>
:それはこのような何かを見ました。これは私が思い付いたものです:
_queryBuilder(queryString) {
const prefixQueryFields = [
'field_1^5',
'field_2^4',
'field_3',
];
return new ImmutableQuery()
.addQuery(BoolMust([
MultiMatchQuery(queryString, {
type: 'phase_prefix',
fields: prefixQueryFields,
})
]))
.addQuery(BoolMustNot([
TermQuery('status', 'archived'),
]));
}
...
<SearchBox
searchOnChange={true}
queryBuilder={this.queryBuilder}
/>
このクエリはめちゃめちゃさらに出てきた、と私はどのようなドキュメントやソースコードをザッを見て確認した後、次の試行する見当がつかない。
(簡潔にするために、私は間違ったクエリを含む誰かが情報が有用であろうと考えない限り、作成されたこれらの二つの試みを気にしないだろう。)